Django Auth认证组件
Auth组件是什么
Django为我们写好的一个综合的用户管理模块。这个模块为我们提供了关于用户管理的大多数方法。
使用
from django.contrib import auth
方法
-
authenticate(username,password)
判断用户名密码是否存在,存在返回认证的对象,否则返回None
user_obj = auth.authenticate(username = username, password = password) print(user_obj)
-
is_authenticate
判断当前请求是否经过验证
if not request.user.is_authenticated(): return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
-
login(user_obj)
登录:需要将认证过得对象传入,会自动帮你添加session
auth.login(request, user_obj)
-
logout(request)
退出登录
auth.logout(request)
-
login_requierd
语法糖,自动帮我们做权限认证,例如有没有登录,login_url设置跳转的接口
@login_required(login_url="/login") def home(request): return render(request, "home.html")
-
create_user
创建普通用户
from django.contrib.auth.models import User user_obj = User.objects.create_user(username=username, password=password)
-
create_superuser
创建管理员用户
user_obj = User.objects.create_superuser(username=username, password=password, email=email) # 管理员用户必须要传三个参数
-
check_password
查看密码时候一致
is_pwd = request.user.check_password(password)
-
set_password
设置新密码,设置密码必须要保存,并且修改密码后session会失效,这是Django的机制使然
request.user.set_password(new_pwd) request.user.save()
方法
- is_staff : 用户是否拥有网站的管理权限
- is_active : 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录
继承拓展User表字段
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
phone = models.CharField(max_length=11, null=True, unique=True)
addr = models.CharField(max_length=32, null=True)
在models.py 中添加完拓展类后还需要在setting.py 中配置
AUTH_USER_MODEL = "app名.UserInfo"