【Django】基于Jwt的token认证(登录接口)
    		       		warning:
    		            这篇文章距离上次修改已过427天,其中的内容可能已经有所变动。
    		        
        		                
                
from django.contrib.auth import authenticate, login
from rest_framework_jwt.settings import api_settings
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import status
 
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
 
class LoginView(APIView):
    def post(self, request, *args, **kwargs):
        username = request.data.get("username")
        password = request.data.get("password")
 
        user = authenticate(request, username=username, password=password)
        if user is not None:
            payload = jwt_payload_handler(user)
            token = jwt_encode_handler(payload)
            response = {
                'token': token,
                'user': user.username  # 返回用户名只是为了示例,实际项目中可能需要返回更多用户信息
            }
            return Response(response, status=status.HTTP_200_OK)
        return Response({'detail': '用户名或密码错误'}, status=status.HTTP_400_BAD_REQUEST)这段代码定义了一个登录接口,当接收到POST请求时,它尝试使用提供的用户名和密码进行认证。如果认证成功,它将生成一个JWT token并返回它以及用户信息。如果认证失败,它将返回错误信息。这个示例展示了如何在Django中使用JWT进行用户认证,并返回一个有效的token。
评论已关闭