我发布了关于Django身份验证和权限的问题,即使它已经存在。我的问题是,
我有一个后端准备好了DRF的很多视图,模型和序列化器。现在我想对我的应用程序应用身份验证并创建在前端使用的RESTful api。所以我有疑虑
现在是第二个案例
我希望我的问题很明确。如果没有,建议我编辑。 我还想了解一下如何发生的一些例子(如果有的话)。
此外,如果您想查看original post。
答案 0 :(得分:0)
Django使用表auth_user
来保存用户和密码
Django有一个用于检查is_authenticated
Django rest框架使用表authtoken_token
Django rest框架具有用于相同目的的API rest_framework.authtoken.views.obtain_auth_token
在DRF中,对于权限,您可以执行以下操作..
class UserDetail(generics.RetrieveUpdateDestroyAPIView):
"""
User Detail API
"""
permission_classes = ("check_permission1", "check_permission2",) ### you can define your permissions using this
答案 1 :(得分:0)
身份验证如何运作? Django是否为每个用户创建了不同的模型表?
不,Django不会为每个用户创建不同的模型表。用户本身存储为User
- 模型中的条目。因此,要为每个用户提供数据,您必须在数据模型中向特定用户添加外键。
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL)
text = models.TextField()
因此,一旦您的用户登录(已通过身份验证),您只需根据登录用户过滤后模型。 在DRF中,您可以使用权限进行此过滤:
class PostList(generics.ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = (IsOwner,)
class IsOwner(permissions.BasePermission):
"""
Custom permission to only allow owners of an object to see it.
"""
def has_object_permission(self, request, view, obj):
return obj.author == request.user
我希望这会有所帮助