用户认证组件
- 功能:用session纪律登录验证状态
- 前提:使用django自带的用户表(django自带的auth_user)
- 创建超级用户:python manage.py createsuperuser
API:
(一)auth模块的方法
from django.contrib import auth
1,#if验证成功返回user对象,否则返回None
user = auth.authenticate(username=user, password=pwd)
2,定义当前登录对象
auth.login(request, user)
3,注销当前登录对象
auth.logout(request)
(二)auth_User表模块的方法
from django.contrib.auth.models import User
4,判断当前登录是否校验通过【is_authenticated】
request.user.is_authenticated
5,判断挡圈登录是否校验未通过【is_anonymous】
request.user.is_anonymous
6,创建超级用户和普通用户【create_user, create_superuser】
user = User.objects.create_user(username='',password='',email='')
user = User.objects.create_superuser(username='sly',password='sly',email='sly@163.com')
----------
from django.contrib import auth #auth模块 from django.contrib.auth.models import User #auth_user 表的模块 from django.contrib.auth.decorators import login_required #登录校验 装饰器 def auth_reg(request): if request.method == 'POST': user = request.POST.get('name') pwd = request.POST.get('pwd') user = User.objects.create_user(username=user, password=pwd) #创建普通用户 return redirect('/auth_login/') return render(request,'auth_reg.html') def auth_login(request): if request.method == 'POST': user = request.POST.get('name') pwd = request.POST.get('pwd') user = auth.authenticate(username=user, password=pwd) #校验用户名和密码。。 返回为USER名或NONE if user: auth.login(request, user) #request.user = user 如果没有认证通过,那么将会有一个匿名用户 next_url = request.GET.get('next','/auth_login/') #不能写死,这句的意思是,当auth_login的路径中GET的值为重定向的目标路由, #如果没有get值,那么默认为auth_login return redirect(next_url) return render(request, 'auth_login.html') @login_required #装饰器,验证是否为登录校验通过。未通过时执行,在settings.py中的LOGIN_URL = '/auth_login/' def auth_index(request): if request.user.is_authenticated: #判断是否 通过校验 return render(request, 'auth_index.html') return redirect('/auth_login/') @login_required def auth_order(request): return render(request,'auth_order.html') def auth_logout(request): auth.logout(request) #注销当前登录用户。 return redirect('/auth_login/'
----------
总结:
当auth.login(request, user)为None时,那么request.user为匿名用户。
当auth.login(request, user)为登录对象时,那么request.user为验证用户。
request.user是一个全局变量,它可以在任何视图和模板直接使用。