我尝试使用jwt身份验证创建用户登录api,但始终不会返回未授权的令牌,而不是返回令牌。该代码似乎在初始阶段较早就可以工作,但现在却不起作用。我不知道怎么了。我在settings.py中添加了jWT_AUTH和Authentication类。请帮助
序列化器
class UserLoginSerializer(serializers.ModelSerializer):
username = serializers.CharField()
password = serializers.CharField()
class Meta :
model = User
fields = ('username','password')
class TokenSerializer(serializers.Serializer):
token = serializers.CharField(max_length=255)
观看次数
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
from rest_framework_jwt.settings import api_settings
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
class LoginView(generics.CreateAPIView):
permission_classes = (permissions.AllowAny,)
serializer_class = UserLoginSerializer
queryset = User.objects.all()
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:
login(request, user)
serializer = TokenSerializer(data={
"token": jwt_encode_handler(
jwt_payload_handler(user)
)})
if serializer.is_valid():
return Response(serializer.data['token'])
return Response("Not Authorized",status=status.HTTP_401_UNAUTHORIZED)
即使我使用正确的用户名和密码也无法登录。