我目前遇到了一个问题,一个项目使用django 1.3.1,它的管理界面(只是你的友好邻里django.contrib.admin)。该项目已经进行了一段时间,唯一具有工作人员身份的帐户一直是超级用户帐户。
这一点已经改变了。客户请求的帐户具有更细粒度的权限设置。我尝试通过禁用指定帐户的超级用户状态并手动设置适当的权限来进行设置。当用户登录时,管理界面似乎完全忽略了手动指定的权限。即使指定了所有权限,用户仍被拒绝访问任何内容(尽管他仍然可以登录到管理界面)。
这个问题似乎与django版本无关,因为我尝试了快速临时升级到1.3.3甚至1.4。没有运气..。
我可以分享一些项目代码来帮助跟踪问题,但坦率地说,我不知道问题可能是什么。我将非常感谢一些建议。
发布于 2013-10-02 05:07:54
这里是一个基于yassam上面的答案来解决这个问题的例子。我的代码导致了这个问题:
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派生
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发布于 2012-09-26 10:08:33
您是否在使用自己的身份验证后端?如果是,你的后端类是从django.contrib.auth.backends.ModelBackend派生的吗?
我今天在我的代码中发现了同样的问题,问题是我的后端是从object派生的。特别是,我的后端没有实现管理代码使用的一些函数(比如has_module_perms)。
要么从django.contrib.auth.backends.ModelBackend派生你的后端,要么确保管理代码需要的所有函数都在你的后端中定义。
https://stackoverflow.com/questions/12568234
复制相似问题