Amer Abdallah نشر 20 سبتمبر 2021 أرسل تقرير نشر 20 سبتمبر 2021 في الطبيعي يكون رد مصادقة simpleJWT من جانغو Django مشابه للتالي: { "refresh":"" "access": "" } كيف يمكنني أن أعدل على الرد السابق لكي أضيف خصائص آخرى مثل: { "username": "", "detail": "", "accessToken": "", "refreshToken": "" } 2 اقتباس
1 سامح أشرف نشر 20 سبتمبر 2021 أرسل تقرير نشر 20 سبتمبر 2021 يمكنك كتابة طريقة العرض الخاصة بك للـ API إذا كنت تريد تخصيصه، ولا تحتاج إلى استخدام العرض الموجود مسبقًا from rest_framework_simplejwt.tokens import RefreshToken def get_tokens_for_user(user): refresh = RefreshToken.for_user(user) return { 'refresh': str(refresh), 'access': str(refresh.access_token), } ستعيد الدالة get_tokens_for_user أعلاه serialized لرمز refresh token وaccess token للمستخدم المحدد (المدخل إلى الدالة). بشكل عام، يمكن إنشاء token لأي فئة فرعية subclass من rest_framework_simplejwt.tokens.Token بهذه الطريقة. 2 اقتباس
0 Ahmed Sharshar نشر 21 سبتمبر 2021 أرسل تقرير نشر 21 سبتمبر 2021 (معدل) تستطيع انشاء الشكل الخاص بك view دون الحاجة لاي اشكال مصنوعة مسبقا، الكود التالي يوضح كيفية انشاء token: from rest_framework import serializers, viewsets, status class SignInSerializer(serializers.Serializer): username = serializers.CharField(max_length=255, required=True) password = serializers.CharField(max_length=255, required=True, write_only=True) هناك حل أخر أطول قليلا هو أن تستدعي userview set ثم بتقوم بالكتابة على create method، بعدها تقوم بالحصول على المستخدم user ثم انشاء JWT tokens، الكود التالي يوضح تلك العملية: from rest_framework import status from djoser.views import UserViewSet from djoser import signals from djoser.compat import get_user_email from rest_framework_simplejwt.tokens import RefreshToken class CustomRegistrationView(UserViewSet): def perform_create(self, serializer): user = serializer.save() signals.user_registered.send( sender=self.__class__, user=user, request=self.request ) context = {"user": user} to = [get_user_email(user)] if settings.SEND_ACTIVATION_EMAIL: settings.EMAIL.activation(self.request, context).send(to) elif settings.SEND_CONFIRMATION_EMAIL: settings.EMAIL.confirmation(self.request, context).send(to) def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) response_data = serializer.data user = User.objects.get(username = response_data['username']) refresh = RefreshToken.for_user(user) response_data['refresh'] = str(refresh) response_data['access'] = str(refresh.access_token) return Response(response_data, status=status.HTTP_201_CREATED, headers=headers) تم التعديل في 21 سبتمبر 2021 بواسطة Ahmed Sharshar 1 اقتباس
السؤال
Amer Abdallah
في الطبيعي يكون رد مصادقة simpleJWT من جانغو Django مشابه للتالي:
كيف يمكنني أن أعدل على الرد السابق لكي أضيف خصائص آخرى مثل:
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.