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

标签 django permissions django-1.5

我在 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/

相关文章:

python - Python-Django 中的图像到文本扫描

django - timesince 过滤器的格式

python - Django Rest Framework 3.1 打破了 pagination.PaginationSerializer

python - 仅更新 Django 表单中的 ForeignKey 字段

android - 为什么使用 Android ADB shell 的 SQLite 3 命令返回 "permission denied"?

django - 我可以在不创建自定义用户的情况下在Django 1.5中更改USERNAME_FIELD吗?

python - 使用 7zip 和 python 在给定路径中创建受密码保护的文件

java - requestPermissions() 没有调用 onRequestPermissionsResult()

django - 学习 Django 1.5 的最佳方式是什么?

python - 为什么 django.forms.CharField 中缺少 "blank",但存在于 django.db.models.CharField 中?