读书人

request.user失去的是自定义model

发布时间: 2012-11-07 09:56:10 作者: rapoo

request.user得到的是自定义model

#models.py 自定义的model

class MyUser(models.Model):
username = models.CharField(max_length=32, verbose_name=u'用户名')
is_superuser = models.BooleanField(default=False, verbose_name=u'是否是超级用户')
is_active = models.BooleanField(default=False, verbose_name=u'激活')
password = models.CharField(max_length=128, verbose_name=u'密码')
created = models.DateTimeField(auto_now_add=True, verbose_name=u'创建时间')
last_login= models.DateTimeField(auto_now=True, verbose_name=u'更新时间')

def __unicode__(self):
return self.username

def is_authenticated(self):
return True

def hashed_password(self, password=None):
if not password:
return self.password
else:
return hashlib.md5(password).hexdigest()

def check_password(self, password):
if self.hashed_password(password) == self.password:
return True
return False

class Meta:
verbose_name = _(u'管理员')
verbose_name_plural = _(u'管理员')

#auth.py 定义一个后端器,用于说明后端验证机制用到得是MyUser自定义model

class MyBackend:

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

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


#settings.py 配置后端器
AUTHENTICATION_BACKENDS = (
'myapp.auth.MyBackend',
)



读书人网 >编程

热点推荐