django 用户认证组auth 的笔记。

 用户认证组件 

  • 功能:用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是一个全局变量,它可以在任何视图和模板直接使用。

posted @ 2018-12-25 10:56  sly27  阅读(208)  评论(0编辑  收藏  举报