vix*_*ant 2 encryption django rest http django-rest-framework
目前,我 PUT 或 PATCH 的任何密码都不会被加密。
我正在使用 ModelSerializer。
class UserSerializer (serializers.ModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'pk')
Run Code Online (Sandbox Code Playgroud)
使用 ModelViewSet
class UserViewSet (ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)
为什么我的密码以纯文本格式保存?我该如何解决这个问题?
我应该覆盖serialiser中的update()还是ViewSet中的update()?问题出在哪里?
您应该覆盖create
和update
方法serializers
以使加密成为可能:
from django.contrib.auth.hashers import make_password
class UserSerializer(serializers.ModelSerializer):
def create(self, validated_data):
user = User.objects.create_user(
password=make_password(
validated_data['user'].pop('password')
),
**validated_data.pop('user')
)
def update(self, instance, validated_data):
if 'user' in validated_data:
instance.user.password = make_password(
validated_data.get('user').get('password', instance.user.password)
)
instance.user.save()
class Meta:
model = User
fields = (
'url', 'username', 'email', 'pk'
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2303 次 |
最近记录: |