zoukankan      html  css  js  c++  java
  • django如何用邮箱代替用户名登录

    有两种方法

    方法一,修改username字段,让他跟email字段一模一样,然后把email放到username,email字段里面,username放到firstname或者lastname里面,这样username其实就是email了。简单方便,而且代码改动也比较少,我使用的是这种。

    方法二,自己写一个方法来验证,然后加进setting里面。

    下面方法转自http://www.cnblogs.com/aguncn/p/5653850.html

    就是另一个不同的登陆backend。

    而DJANGO会尝不同的方式,哪个成功就用哪个

    authentication.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    from django.contrib.auth.models import User
     
     
    class EmailAuthBackend(object):
        def authenticate(self, username=None, password=None):
            try:
                user = User.objects.get(email=username)
                if user.check_password(password):
                    return user
                return None
            except User.DoesNotExist:
                return None
     
        def get_user(self, user_id):
            try:
                return User.objects.get(pk=user_id)
            except User.DoesNotExist:
                return None

      setting.py中加一个认证方式:

    1
    2
    3
    4
    AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
        'account.authentication.EmailAuthBackend',
    )
  • 相关阅读:
    系统程序员成长计划内存管理(一)
    系统程序员成长计划工程管理(二)
    嵌入式GUI ftk0.3发布
    嵌入式GUI FTK设计与实现目录
    嵌入式GUI FTK设计与实现分层视图
    sql 临时表的问题
    解惑XP系统IIS无法添加映射之诡异现象
    C#高质量缩略图
    C#图片处理之另存为压缩质量可自己控制的JPEG
    SQL注入
  • 原文地址:https://www.cnblogs.com/lgh344902118/p/6594276.html
Copyright © 2011-2022 走看看