zoukankan      html  css  js  c++  java
  • Django自定义User模型和登录验证

    用户表已存在(与其他App共用),不能再使用Django内置的User模型和默认的登录认证。但是还想使用Django的认证框架(真的很方便啊)。

    两个步骤:

    1)自定义Use模型,为了区分系统的User模型,命名为Account。

        business_email = models.EmailField()  
        business_password = models.CharField(max_length=20)  
        contact_first_name = models.CharField(max_length=30)  
        contact_last_name = models.CharField(max_length=30)  
        is_active = models.BooleanField()  
      
        def is_authenticated(self):  
            return True  
      
        def hashed_password(self, password=None):  
            if not password:  
                return self.business_password  
            else:  
                return hashlib.md5(password).hexdigest()  
              
        def check_password(self, password):  
            if self.hashed_password(password) == self.business_password:  
                return True  
            return False  
          
        class Meta:  
            db_table = "bussinesses"  

    2)自定义登录验证后台,并加入AUTHENTICATION_BACKENDS。

    # auth.py  
      
    from coocaca.myauth.models import Account  
       
    class MyCustomBackend:  
      
        def authenticate(self, business_email=None, business_password=None):  
            try:  
                user = Account.objects.get(business_email=business_email)  
            except Account.DoesNotExist:  
                pass  
            else:  
                if user.check_password(business_password):  
                    return user  
            return None  
       
        def get_user(self, user_id):  
            try:  
                return Account.objects.get(pk=user_id)  
            except Account.DoesNotExist:  
                return None  

    在settings.py中加入该验证后台:

    AUTHENTICATION_BACKENDS = (  
      
        'coocaca.myauth.auth.MyCustomBackend',   
      
    )  

    这样Django就会使用MyCustomBackend作为登录验证后台。

    验证通过后返回的是我们自定义的Account模型,并且request.user中获取的也是我们的Account模型(这正是MyCustomBackend中get_user方法的功能)。

  • 相关阅读:
    git常用操作命令
    如何编写高质量代码
    Chrome调试工具简单介绍
    使用eclipse+tomcat搭建本地环境
    chrome设置--disable-web-security解决跨域
    利用Maven管理工程项目本地启动报错及解决方案
    用户输入验证【提升篇】
    简单【用户输入验证】
    【消息框】的返回值
    【消息框】的4种显示形式
  • 原文地址:https://www.cnblogs.com/robinunix/p/7988124.html
Copyright © 2011-2022 走看看