Django 認證系統
阿新 • • 發佈:2017-12-05
tro rec 是否 cnblogs span session nag ref 舉例 實現認證系統的兩種方法概述
實現認證系統的兩種方法概述
1. 使用cookie和session的步驟
簡要 步驟:
1.設置session requset.session[‘自定義一個名字‘]=值 2.獲取session值 request.session.get(‘自定義的名字‘) 3.清空session request.session.flush() 4.存儲session的數據表 django_session
舉例說明:
def login(requset): if requset.method==‘POST‘: username=requset.POST.get(‘username‘) password=requset.POST.get(‘password‘) ret=models.User.objects.filter(username=username,password=password)#如果不匹配 就是一個空的queryset集合 if ret: requset.session[‘is_login_egon‘]=True #設置settion requset.session[‘username‘]=username #為了在index的頁面 渲染用戶名return redirect(‘/index/‘) else: return redirect(‘/login/‘) return render(requset,‘login.html‘) def index(request): #取值session 做判斷 if not request.session.get(‘is_login_egon‘): return redirect(‘/login/‘) name=request.session.get(‘username‘)return render(request,‘index.html‘,locals()) #這個locals()感覺就是有啥值都返回 def logout(request): request.session.flush() #原理就是根據sessionkey 然後刪除整條session記錄 return redirect(‘/login/‘)
2.使用auth模塊的步驟
簡要步驟:
使用django自帶的auth_user表 導入: from django.contrib import auth from django.contrib.auth.models import User auth.authenticate()做驗證 auth.authenticate(username=username,password=password) 設置session auth.login(requset,user) #第二個參數是 當前的登錄對象 也就是上邊驗證的user這個對象 判斷session if not request.user.is_authenticated(): 刪除session auth.logout(request) 創建超級用戶 >python manage.py createsuperuser # User.objects.create_user(username=username,password=password) User.objects.create_superuser(username=username,password=password)
舉例說明:
from django.contrib import auth from django.contrib.auth.models import User def login(requset): if requset.method==‘POST‘: username = requset.POST.get(‘username‘) password=requset.POST.get(‘password‘) #有 返回對象;無 返回空 user=auth.authenticate(username=username,password=password) if user: #當用戶登錄成功後 就該記錄cookie session了 #設置session auth.login(requset,user) #第二個參數是 當前的登錄對象 也就是上邊驗證的user這個對象 return redirect(‘/index/‘) pass else: return redirect(‘/login/‘) return render(requset,‘login.html‘) def index(request): #驗證是否有了session 返回布爾值 if not request.user.is_authenticated(): return redirect(‘/login/‘) return render(request,‘index.html‘) def logout(request): auth.logout(request) return redirect(‘/login/‘)
實現認證系統的兩種方法詳解
http://www.cnblogs.com/lazyball/p/7986132.html
Django 認證系統