首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >涉及非超级用户帐户的django管理员权限的问题

涉及非超级用户帐户的django管理员权限的问题
EN

Stack Overflow用户
提问于 2012-09-24 23:33:54
回答 2查看 801关注 0票数 1

我目前遇到了一个问题,一个项目使用django 1.3.1,它的管理界面(只是你的友好邻里django.contrib.admin)。该项目已经进行了一段时间,唯一具有工作人员身份的帐户一直是超级用户帐户。

这一点已经改变了。客户请求的帐户具有更细粒度的权限设置。我尝试通过禁用指定帐户的超级用户状态并手动设置适当的权限来进行设置。当用户登录时,管理界面似乎完全忽略了手动指定的权限。即使指定了所有权限,用户仍被拒绝访问任何内容(尽管他仍然可以登录到管理界面)。

这个问题似乎与django版本无关,因为我尝试了快速临时升级到1.3.3甚至1.4。没有运气..。

我可以分享一些项目代码来帮助跟踪问题,但坦率地说,我不知道问题可能是什么。我将非常感谢一些建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 05:07:54

这里是一个基于yassam上面的答案来解决这个问题的例子。我的代码导致了这个问题:

代码语言:javascript
复制
class MyCustomModelBackend(object):

    def authenticate(self, username=None, password=None):
        try:
            user = User.objects.get(username__iexact=username)
            if user.check_password(password):
                return user
        except User.DoesNotExist:
            return None

要解决此问题,请将其更新为从django.contrib.auth.backends.ModelBackend派生

代码语言:javascript
复制
from django.contrib.auth.backends import ModelBackend

class MyCustomModelBackend(ModelBackend):

    def authenticate(self, username=None, password=None):
        try:
            user = User.objects.get(username__iexact=username)
            if user.check_password(password):
                return user
        except User.DoesNotExist:
            return None
票数 1
EN

Stack Overflow用户

发布于 2012-09-26 10:08:33

您是否在使用自己的身份验证后端?如果是,你的后端类是从django.contrib.auth.backends.ModelBackend派生的吗?

我今天在我的代码中发现了同样的问题,问题是我的后端是从object派生的。特别是,我的后端没有实现管理代码使用的一些函数(比如has_module_perms)。

要么从django.contrib.auth.backends.ModelBackend派生你的后端,要么确保管理代码需要的所有函数都在你的后端中定义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12568234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档