一、什么是auth模块:
auth模块是Django自带的用户认证模块,我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登录,用户认证,注销,修改密码等功能,这还真是比较麻烦的事情呢!!!
同时,Django最为一个完美主义者的终极框架,当然也会想到用户的这些情况。由此用户认证系统auth就出现了!
二、auth模块的常用方法:
1.创建用户:
from django.contrib.auth.models import User User.objects.create(username=username,password=password) # 不可用 密码不是加密的 User.objects.create_user(username=username,password=password) # 创建普通用户密码自动加密 User.objects.create_superuser(username=username,password=password,email='123@qq.com') # 创建超级用户需要邮箱数据
2.校验用户名和密码是否正确:
from django.contrib import auth user_obj = auth.authenticate(request,username=username,password=password) # 必须传用户名和密码两个参数缺一不能
3.保存用户登录状态:
auth.login(request,user_obj) # 只要这句话执行了 后面在任意位置 只要你能拿到request你就可以通过request.user获取到当前登录的用户对象
4.判断用户登录状态:
request.user.is_authenticated()
5.校验原密码是否正确
request.user.check_password(old_password)
6.修改密码:
request.user.set_password(new_password) request.user.save() # 千万不要忘了
7.注销:
auth.logout(request)
8.校验用户是否登录|装饰器
from django.contrib.auth.decorators import login_required #局部配置(login_url='/login/') @login_required(login_url='/login/') def index(request): pass #全局配置(login_url='/login/') settings配置文件中 直接配置 LOGIN_URL = '/login/' @login_required def index(request): pass # 如果全局配置了 局部也配置 以局部的为准
三、如何扩展auth_user字段表
方式一:利用一对一外键字段关系
from django.contrib.auth.models import User
class UserDetail(models.Model): phone = models.BigIntegerField() user = models.OneToOneField(to='User')
方式二:利用继承关系(推荐使用)
from django.contrib.auth.models import AbstractUser class Userinfo(AbstractUser): phone = models.BigIntegerField() register_time = models.DateField(auto_now_add=True) # 一定要注意 还需要去配置文件中配置,当在工作中,都是先进行表设计的,
这时我们要先在创建表设置下面设置,这时Django不会自动创建auth表了! AUTH_USER_MODEL = 'app01.Userinfo' # 应用名.表名 # 这么写完之后 之前所有的auth模块功能全都以你写的表为准