zoukankan      html  css  js  c++  java
  • 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是一个全局变量,它可以在任何视图和模板直接使用。

  • 相关阅读:
    被@ResponseBoby注释的方法在拦截器的posthandle方法中设置cookie失效的问题
    python之异常处理
    python之url编码
    python之发送邮件
    python之使用request模块发送post和get请求
    python之小技巧积累
    python之sys.argv[]
    python之MD5加密
    python之os、sys和random模块
    python之time和datetime的常用方法
  • 原文地址:https://www.cnblogs.com/sly27/p/10172690.html
Copyright © 2011-2022 走看看