gpt4 book ai didi

Django:user.has_perm 始终为 true 并且用户不是 super 用户。为什么?

转载 作者:行者123 更新时间:2023-12-02 13:22:53 24 4
gpt4 key购买 nike

我在 Django 1.5 应用程序中分配了用户的权限。当我用

列出所有用户权限时
In [1]: user.get_all_permissions()
Out[1]: set([u'profile.change_profile'])

我可以看到一项权限(这是正确的且需要的)。该用户也不是 super 用户,也不是管理员。

In [2]: user.is_superuser
Out[2]: False

但是,如果我尝试使用 user.has_perm,我总是会得到 True 作为任何提交的权限请求的返回。

In [3]: user.has_perm('random_permission')
Out[3]: True

如果用户是 super 用户/管理员,我期望的行为。为什么非 super 用户对于每个请求总是得到 True ?我错过了什么设置吗?

最佳答案

正如 Thane Brimhall 在评论中提到的,您应该检查您的身份验证后端。您可以在 django sources 中找到有关 User 模型的 has_perm 方法的注释:

Returns True if the user has the specified permission. This method queries all available auth backends, but returns immediately if any backend returns True. Thus, a user who has permission from a single auth backend is assumed to have permission in general.

另外不要忘记检查用户组。默认后端检查用户组权限,因此可以连接。

关于Django:user.has_perm 始终为 true 并且用户不是 super 用户。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16428827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com