第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DFR簡單jwt從用戶實(shí)例獲取authToken而不是用戶名/密碼

DFR簡單jwt從用戶實(shí)例獲取authToken而不是用戶名/密碼

MM們 2023-07-29 16:32:10
我有一個簡單的聊天應(yīng)用程序,其中的身份驗(yàn)證與 Whatsapp 完全一樣獲取電話號碼=>如果不存在則創(chuàng)建其他號碼跳過=>發(fā)送驗(yàn)證碼并將其設(shè)置為用戶模型中的“phone_code”字段=>最后刪除“phone_code”(如果經(jīng)過驗(yàn)證)該應(yīng)用程序是在 React Native 中構(gòu)建的,并以 Rest 框架作為 API,我對此很陌生,并且我正在努力在沒有密碼的情況下獲取身份驗(yàn)證令牌。我使用 djangorestframework-simplejwt我的寄存器視圖:@api_view(('POST',))def register(request):    if request.method == 'POST':        serializer = UserSerializer(data=request.data)        if not serializer.is_valid():            if 'is not valid' in serializer.errors['phone_number'][0]:                return Response(serializer.errors, status.HTTP_400_BAD_REQUEST)        phone_number = serializer.initial_data['phone_number'].replace(' ', '')        try:            user = User.objects.get(phone_number=phone_number)        except User.DoesNotExist:            user = User.objects.create_user(                phone_number=phone_number, username=phone_number)        user.phone_code = randint(99999, 999999)        user.save()        TokenObtainPairView()        return Response(serializer.data, status.HTTP_200_OK)        # todo send validation code, I will handle later我的登錄視圖(Chich 驗(yàn)證驗(yàn)證碼)@api_view(['POST',])def loginuser(request):    if request.method == 'POST':        phone_number = request.data.get('phone_number')        try:            user = User.objects.get(phone_number=phone_number)            if int(request.data.get('phone_code')) == user.phone_code and user.phone_code:                user.phone_code = None                user.save()                #!!!!!!!!!!!!!!!!!!!NOW HOW CAN I GET THE JWT AUTHENTICATION TOKEN AND SEND IT TO MY REACT NATIVE APP?!                return JsonResponse({'phone_number': phone_number}, status=200)當(dāng)用戶驗(yàn)證他的電話號碼時,如何將 jwt 格式的身份驗(yàn)證令牌與響應(yīng)一起發(fā)送?urls.py:path('api/token/', users_views.ObtainToken.as_view(), name='token_obtain_pair'),我的自定義 acquireToken 視圖:class ObtainToken(TokenObtainPairView):    permission_classes = (AllowAny,)    serializer_class = MyTokenObtainPairSerializer我還發(fā)現(xiàn),當(dāng)我使用 Postman 時,如果我發(fā)送空密碼,系統(tǒng)將給出身份驗(yàn)證令牌。我將不勝感激任何幫助,謝謝
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個贊

您的代碼應(yīng)該基于現(xiàn)有的視圖和序列化器rest_framework_simplejwt:使用TokenObtainPairView是一個好的開始,請保留它。


然后在你的seriliizer_class中MyTokenObtainPairSerializer,你應(yīng)該使用TokenObtainSerializer


class MyTokenObtainPairSerializer(TokenObtainPairSerializer):


    def validate(self, attrs):

        self.user = User.objects.get(phone_number=phone_number)

        # Do the verification with the phone_code here, if error, return a response with an error status code


        refresh = self.get_token(self.user)


        data['refresh'] = text_type(refresh)

        data['access'] = text_type(refresh.access_token)


        return data


查看完整回答
反對 回復(fù) 2023-07-29
  • 1 回答
  • 0 關(guān)注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號