zoukankan      html  css  js  c++  java
  • django 自带的验证功能

    django.contrib.auth提供了很多验证方法

    authenticate():

    提供了用户认证,在自带的数据库表中验证用户名和密码,需要username和password两个关键字参数

    如果认证成功后,会返回一个User对象。authenticate()会在User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。

    当我们试图登陆一个从数据库中直接取出来不经过authenticate()的User对象时会报错!!!

    也就是数据库表中有一个属性代表登录验证过了

    登录验证

    auth.login(HttpRequest,user)

    该函数接受一个Httprequest对象,以及一个认证了的User对象,

    这个函数使用django的session框架给某个已认证的用户附加上sessionid等信息

    注销用户

    logout(request)

    登录验证装饰器:

    @login_required

    from django.contrib.auth.decorators import login_required

    如果用户没有登录,会跳转到django默认的登陆路径:/accounts/login/

    所以我们要在settings里面修改配置项,把默认值换到我们的登陆

    # 设置 我这个网站 默认的登录页面是什么

    LOGIN_URL = "/login/"

    User对象:

    User 对象属性:username, password(必填项)password用哈希算法保存到数据库

    is_staff : 用户是否拥有网站的管理权限.

    is_active : 是否允许用户登录, 设置为``False``,可以不用删除用户来禁止 用户登录

    is_authenticated():

    如果是真正的 User 对象,返回值恒为 True 。 用于检查用户是否已经通过了认证。
    通过认证并不意味着用户拥有任何权限,这个方法甚至也不检查该用户是否处于激活状态,只是表明用户成功的通过了认证。

    这个方法很重要, 在后台用request.user.is_authenticated()判断用户是否已经登录,如果true则可以向前台展示request.user.name

    创建普通用户:

    from django.contrib.auth.models import User

    user=User.objects.create_user(username='',,password='')

    检查密码,如果密码正确,返回True:

    check_password(password)

    用户需要修改密码的时候,首先要让其输入原来的密码 ,如果给定的值通过了密码检查,返回 True

    重置密码:

    set_password()

    user=User.objects.get(username='')

    user.set_password('password')

    user.save()

    进阶:

    如果想给用户添加新的字段,比如手机号,django肯定也考虑到了

    我们可以通过继承内置的auth_user表的对应的类,来自己定义一个自己的ORM类。

    导入定义的父类:

    from django.contrib.auth.models improt AbstractUser

    class UserInfo(AbstractUser):

      phone=models.CharField(max_lebgth=11)

      def __str__(self.username)

        return self.username

    这样就可以把手机号添加到user的类里面了,但要注意的是要设置

    Settings里面告诉django,我要用新定义的Userinfo表来做用户验证:

    AUTH_USER_MODEL="app名.UserInfo"

  • 相关阅读:
    jsp第三次作业
    C223生产版本,调用HTTP,实时传输生产版本
    在KO88结算成本之后,对特定的内部订单类型,替换默认的统驭科目
    SQL SERVER函数——表值函数的处理
    SQL SERVER行转列应用小结
    SQL SERVER里的赋值机制闲聊
    告别ADO.NET实现应用系统无缝切换的烦恼(总结篇)
    时间的起始
    用心若镜
    You get a dream...you gotta protect it.
  • 原文地址:https://www.cnblogs.com/zhaoweihang/p/9244980.html
Copyright © 2011-2022 走看看