【Django】基于Jwt的token认证(登录接口)
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。
评论已关闭