1. 程式人生 > >Django 認證系統

Django 認證系統

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 認證系統