gpt4 book ai didi

django - “用户”对象没有属性is_authenticated

转载 作者:行者123 更新时间:2023-12-04 18:11:29 25 4
gpt4 key购买 nike

我已经为我的Django应用创建了一个用户模型

class User(Model):
"""
The Authentication model. This contains the user type. Both Customer and
Business models refer back to this model.
"""
email = EmailField(unique=True)
name = CharField(max_length=50)
passwd = CharField(max_length=76)
user_type = CharField(max_length=10, choices=USER_TYPES)
created_on = DateTimeField(auto_now_add=True)
last_login = DateTimeField(auto_now=True)

def __unicode__(self):
return self.email

def save(self, *args, **kw):
# If this is a new account then encrypt the password.
# Lets not re-encrypt it everytime we save.
if not self.created_on:
self.passwd = sha256_crypt.encrypt(self.passwd)
super(User, self).save(*args, **kw)

我还创建了一个身份验证中间件来使用此模型。
from accounts.models import User
from passlib.hash import sha256_crypt

class WaitformeAuthBackend(object):
"""
Authentication backend fo waitforme
"""

def authenticate(self, email=None, password=None):
print 'authenticating : ', email
try:
user = User.objects.get(email=email)
except User.DoesNotExist:
user = None

if user and sha256_crypt.verify(password, user.passwd):
return user
else:
return None

def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None

我已经正确地修改了settings.py文件,如果我向该后端添加一些打印语句,我可以看到用户详细信息已打印出来。我不记得阅读过我需要在Django文档中实现is_authenticated的内容。我想念一些愚蠢的东西吗?

最佳答案

我不太确定为什么您创建了一个新的User模型,而不是使用Django的内置模型并添加链接的UserProfile,这是我们建议做的事情(直到1.5发行,当可插入用户模型可用时)。但是,是的,您需要定义一个is_authenticated方法,该方法始终返回True:这正是内置模型所做的。原因是,如果您有一个实际的用户,则将始终对其进行身份验证:否则,您将具有一个AnonymousUser对象,该对象的is_authenticated方法始终返回False。

关于django - “用户”对象没有属性is_authenticated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13204367/

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