一、作用: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>的地方改为新表名即可。