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>的地方改为新表名即可。

原文地址:https://www.cnblogs.com/caoyu080202201/p/13081803.html