Django框架中auth模块的详解
auth模块
auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在数据库中,还可以检验用户是否已经登录,校验密码等
auth方法
- 导入
from django.contrib import auth
1、authenticate()
提供了用户认证,验证用户名以及密码是否正确,如果信息有效会返回一个user对象
user =authenticate(username='',password='')
2、login(HttpRequest,user)
接受一个HttpRequest对象,以及一个认证了User对象,此函数使用django的session框架给某个已认证的用户附加上session,id等信息
from django.contrib.auth import authenticate,login
def my_view(request):
username=request.POST['username']
password=request.POST['password']
user=authenticate(username=username,password=password)
if user is not None:
login(request,user)
else:
pass
3、logout(request)注销用户
接受一个HttpRequest对象,无返回值,调用该函数时,当前请求的session信息会全部清除
from django.contrib.auth import logout
def logout_view(request):
logout(request)
4、user对象的is_authenticated()
用户登录后才能访问某些页面
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
pass
def my_view(request):
if not user.is_authenticated():
pass
user对象
属性:username,password,其中password用哈希算法保存到数据库
is_staff:用户是否拥有网站的管理权限
is_active:是否允许用户登录,设置为‘False’,可以不用删除用户来禁止用户登录
1、create_user创建用户
from django.contrib.auth.models import User
user=User.object.create_user(username='',password='',email='')
2、check_password(password)校验旧密码
user=User.objects.get(username='')
if user.check_password(password):
pass
3、set_password()修改密码
user=User.objects.get(username='')
user.set_password(password='')
user.save
继承auth方法
1、导入一个AbstractUser类,并且写一个自定义类,继承AbstractUser
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
pass
2、在setting.py文件里配置
AUTH_USER_MODEL=''
既然选择了远方,只能风雨兼程