zoukankan      html  css  js  c++  java
  • auth模块

    一、作用:django项目在首次使用数据迁移命令后,会生成一些默认的表,其中有一张名为auth_user的表,就是用来记录用户信息的表,而auth模块就是提供了对这张表进行操作的相关方法。

    二、超级管理员:初始的auth_user表没有任何内容,需要先通过指令<python manage.py createsuperuser>来先创建一个超级管理员,新建的django项目有个默认的<admin>路由,进去页面后需要输入用户名和密码,此处就是参照的auth_user表的信息,只有超级管理员才可以在此登录。

    三、auth模块的基本方法

      1、必用模块:

    from django.contrib import auth  # 主模块,包含所有主要方法
    from django.contrib.auth.decorators import login_required  # 登录验证装饰器相关方法
    from django.contrib.auth.models import User  # 导入auth_user表

      2、添加普通用户:User.objects.create_user(username=新用户名, password=新密码)。

        使用create_创建的用户信息,密码才是密文,才能使用auth模块的各种校验机制。

      3、添加超级管理员:User.objects.create_superuser(username=新用户名, email=新邮箱, password=新密码)。

        在视图层里面创建超级管理员,邮箱是必填的,而通过指令创建时,输入邮箱的步骤可以跳过。

        一般创建超级管理员的权限不会暴露给前端。

      4、校验用户名与密码:auth.authenticate(request, username=待校验用户名, password=待校验密码)。

        该方法必须同时校验用户名与密码。

        校验通过,返回用户对象。

        校验失败,返回None。

      5、校验密码:request.user.check_password(待校验密码)。

        需要在已登录的状态下,与当前登录的用户信息做校验。

      6、修改密码:

        第一步,request.user.set_password(新密码)。 --- 只是临时修改了用户对象的密码。

        第二部,request.user.save()。 --- 真正同步到了数据库。

        需要在已登录的状态下,修改的是当前登录的用户信息。

      7、保存用户登录状态:auth.login(request, 用户对象)。

      8、判断当前是否有用户登录:request.user.is_authenticated()。、

        返回布尔值。

      9、获取当前登录的用户:request.user。

      10、注销当前登录的用户:auth.logout(request)。

      11、登录校验装饰器:

        @login_required(login_url='/登录路由/')。 --- 给某一视图函数配置跳转地址。

        在settings.py中书写:LOGIN_URL = '/登录路由/'。 --- 给全局所有加了登录校验装饰器的视图函数配置跳转地址。

        局部和全局都配置了的情况下, 以局部为准。

    四、给auth_user表增加额外的字段

      1、补充字段另外建表:新建一个表,与auth_user表建立一对一关系,如此不便于统筹操作表的方法,所以不推荐使用。

      2、新建一个表来替换auth_user表:

        必用模块:

    from django.contrib.auth.models import AbstractUser

        新表的类必须继承AbstractUser。

        当前数据库还没用使用数据迁移命令产生默认的auth_user表。

        新表中额外增加的字段名不要与AbstractUser中的字段名有冲突。

        在settings.py中书写:AUTH_USER_MODEL = 'app名.新表的类名'。

        至此,便实现了替换,再用数据迁移指令后,不再会默认创建auth_user,取而代之的是创建新表。

        新表可以用所有auth模块的方法,把原本写<user>的地方改为新表名即可。

  • 相关阅读:
    POJ 2329 Nearest number
    POJ 2192 Zipper (简单DP)
    POJ 2231 Moo Volume(递推、前缀和)
    数据库增删改查--2017-04-08
    时间戳--2017-04-07
    数据库三大范式---2017-04-07
    数据库主键和外键----数据库基础知识1---2017-04-07
    登录页面(简单版,带遮罩层)---2017-04-06 (与04-05日写的差不多,界面圆滑点)
    第一阶段项目所遇到的问题---2017-04-066
    图片点击轮播(四)高级--2017-04-05
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13081803.html
Copyright © 2011-2022 走看看