zoukankan      html  css  js  c++  java
  • Django多账号登录

    Django多账号登录

    顾名思义用户既可以用用户名登录,也可以用电话号登录,如果有别的,也可以拓展

    django可以自定义登录验证方法,只需要继承默认认证类,然后重写对应方法。之后在配置文件中指定一下就可以。

    新建自定义认证类:

    from django.contrib.auth.backends import ModelBackend
    import re
    from users.models import User
    
    class MeiduoModelBackend(ModelBackend):
        def authenticate(self, request, username=None, password=None, **kwargs):
            # username接收的数据,既可能是用户名也可能是手机号
            try:
                if re.match('^1[3-9]d{9}$', username):
                    # 手机号
                    user = User.objects.get(mobile=username)
                else:
                    user = User.objects.get(username=username)
            except:
                return None
            else:
                # 验证密码
                if user.check_password(password):
                    return user
                else:
                    return None
    

    在配置文件中指定使用自己的认证类:

    # 自定义认证类型
    AUTHENTICATION_BACKENDS = ['meiduo.utils.auth_backends.MeiduoModelBackend']
    

    现在可以用用户名和电话登录

    源码

  • 相关阅读:
    Mac_Homebrew
    Python的路径引用
    OpenTSDB-Writing Data
    OpenTSDB介绍
    Git文件状态描述
    TCollector
    TEXT和BLOB区别
    MySQL索引与Index Condition Pushdown
    webService入门学习(一)
    redis学习笔记(一 基本操作)。
  • 原文地址:https://www.cnblogs.com/lulujunsir/p/auth.html
Copyright © 2011-2022 走看看