我的应用不需要密码,因为我想用手机和 OTP 登录。我正在尝试实现自定义的简单 JWT 令牌身份验证,它只需要一个电话号码,不需要密码。我是 Django 新手,我确实检查了 stackoverflow 中的一些链接并尝试了这个:
class CustomSerializer(TokenObtainPairSerializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields[self.username_field] = serializers.CharField()
del self.fields['password']
def validate(self,attr):
print(attr)
data = super().validate(attr)
token = self.get_token(self.user)
print (token)
try:
request = self.context["request"]
print(request)
except KeyError:
pass
request_data = json.loads(request.body)
print(request_data)
所以这里当 validate 方法被执行时,它会去验证TokenObtainPairSerializer
init 方法,该方法会调用它的父类的 init 方法来验证密码。所以即使我在我的自定义序列化程序中删除密码字段,它仍然会给我一个密码错误。我试图传递密钥错误,但它再次在request.body
.
我坚持这一点,我不知道如何在没有密码的情况下实现简单的 JWT。