我想问下面的代码提供更新密码,但我想在当前密码确认过程后更新密码.那么我应该为它添加什么呢?谢谢.
class UserPasswordSerializer(ModelSerializer):
class Meta:
model = User
fields = [
'password'
]
extra_kwargs = {
"password": {"write_only": True},
}
def update(self, instance, validated_data):
for attr, value in validated_data.items():
if attr == 'password':
instance.set_password(value)
else:
setattr(instance, attr, value)
instance.save()
return instance
Run Code Online (Sandbox Code Playgroud) 我在我的 API 中使用 JWT。但我无法使用 JWT 进行身份验证。我找不到什么问题。感谢您的帮助。
@api_view(['POST'])
@permission_classes((AllowAny,))
def UserLogin(request):
try:
username = request.POST.get('username', None)
password = request.POST.get('password', None)
account = authenticate(username=username, password=password)
except (User.DoesNotExist, User.PasswordDoesNotMatch):
return Response({'message': 'Wrong credentials'}, status=400)
if account is not None:
if account.is_active:
login(request, account)
if request.user.is_superuser:
user_type = '0'
elif request.user.is_instructor():
user_type = '1'
elif request.user.is_student():
user_type = '2'
else:
user_type = '3'
payload = {
'user_type': user_type,
'username': username,
'exp': datetime.utcnow() + timedelta(seconds=JWT_EXP_DELTA_SECONDS)
}
jwt_token = jwt.encode(payload, JWT_SECRET, JWT_ALGORITHM)
return Response({'token': jwt_token.decode('utf-8')})
Run Code Online (Sandbox Code Playgroud)
有效载荷数据返回 …