【发布时间】:2017-08-18 13:17:05
【问题描述】:
对不起我的英语。现在我学习 django rest 并尝试为用户创建自定义权限。 Fox 示例权限:“大”和“小”。
我的用户模型
class User(AbstractUser):
is_active = models.BooleanField(default=False)
email = models.EmailField(blank=False, unique=True)
avatar = models.ImageField(upload_to='avatar/users', blank=True)
class Meta:
permissions = (
("big", "this is big boy"),
("small", "this is small"),
)
然后我向用户添加了类似这样的权限:
permission = Permission.objects.get(name='big')
user.user_permissions.add(permission)
user.save()
创建自定义类,it类检查权限:
class IsBigBoy(permissions.BasePermission):
def has_permission(self, request, view):
return request.user.has_perm('users.big')
在视图中我创建了测试类来检查我的自定义权限
class MySuperTestRequest(generics.CreateAPIView):
permission_classes = (permissions.IsAuthenticated, custom_permissions.IsBigBoy)
serializer_class = CreateSomethingSerializer
def post(self,
return Response({"detail": "good"}, status.HTTP_200_OK)
问题:
return request.user.has_perm('users.big')
它的代码总是返回true
【问题讨论】:
-
如果登录用户是超级用户,那么
has_perm将总是返回True。包含User模型的应用的名称是什么? -
@Alasdair oooo,感谢您的回答,我尝试从超级用户那里完成。我会检查它。应用调用
users