我有一个基本的 django rest 服务,它
- 注册一个人并且
- 更新他的密码。
我想在它上面添加 jwt 身份验证。如果我按照教程进行操作,我需要在项目的 urls.py 中添加一个名为“api-token-auth”的新 url。但是,我不想添加这个新的 url 并希望我的注册调用发送一个令牌作为响应。
这是我的代码:
序列化程序.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
def create(self, validated_data):
user = User(
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
def update(self, instance, validated_data):
instance.set_password(validated_data['password'])
instance.save()
return instance
class Meta:
model = User
fields = ('url', 'username', 'password')
lookup_field = 'username'
write_only_fields = ('password',)
视图.py
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.exclude(is_superuser=1)
serializer_class = UserSerializer
lookup_field = 'username'
- 应该做些什么来实现这一目标?我应该在序列化程序的 create 方法中调用 api-auth-token 吗?
- django-rest-framework-jwt 如何处理多个身份验证令牌并正确识别哪个令牌属于哪个用户?特别是当它不在数据库中存储令牌时。
- 如何使用此身份验证机制来限制我的用户只能查看/更新/删除他的用户?
- 一般来说,我如何使用这种身份验证机制来做任何事情。例如,如果用户想将他的名字写入 /tmp/abcd.txt。如何确保只有经过身份验证的用户才能这样做?
- 这种方法有没有潜在的漏洞。如果我的应用程序要存储大量分类数据,我应该使用相同的代码吗?