request.user得到的是自定义model

来源:互联网 发布:mac docker 仓库地址 编辑:程序博客网 时间:2024/04/30 20:25

#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',
)