我创建了用于在 Django 中注册用户的序列化程序djangorestframework
。我也django-rest-knox
用于令牌身份验证。问题是创建用户时密码没有在数据库中散列。下面是序列化器的代码:
class RegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'password')
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
# user = User.objects.create_user(
# validated_data['username'], validated_data['email'], validated_data['password'])
user = User(
username=validated_data['username'], email=validated_data['email'])
user.set_password(validated_data['password'])
user.save()
return user
请注意,我在上面的代码中尝试了创建用户的注释和未注释方法。在这两种情况下,密码都在数据库中保存为原始密码。以下是settings.py
与实现 knox 令牌认证相关的部分:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication',)
}
有什么建议为什么密码没有被散列?