基於Django使用者認證系統詳解

2022-10-04 20:18:26 字數 1969 閱讀 4708

一. 認證系統概要

create_user 建立使用者

aut程式設計客棧henticate 驗證登入

login 記住使用者的登入狀態

logout 退出登入

is_authenticated 判斷使用者是否登入

login_required 判斷使用者是否登入的裝飾器

二. 建立使用者和驗證登入

當使用者註冊的時候用create_user(usernwww.cppcns.comame,password,email)預設情況下is_active=true,is_staff=false,is_superuser=false。

底層將password用hash演算法加密之後儲存到資料庫中。

當使用者登入的時候用authenticate(username=username,password=password)驗證登入,判斷資料庫中是否存在使用者輸入的賬號和密碼,返回乙個user物件。

底層將password用hash演算法加密後和資料庫中password進行對比。

三. 記住使用者的登入狀態

當使用者登入的時候用login(request,user)來記住使用者的登入狀態,預設將使用者的id儲存在sessio程式設計客棧n中。

login有兩個引數乙個是request,乙個是user,user的**必須是authenticate返回的。也就是說用login之前必須先呼叫authenticate。

四. 退出登入

當使用者登出的時候用logout(request),只需要乙個引數request。

五. 判斷用程式設計客棧戶是否登入

在後台的檢視函式裡可以用request.user.is_authenticated()判斷使用者是否登入

在前端頁面中可以用判斷使用者是否登入

六. 裝飾器判斷使用者是否登入

基於普通的檢視函式可以使用@login_required來裝飾,但是基於類檢視的get和post方法不能直接使用@login_required來裝飾。

基於類檢視的裝飾有以下三種:

第一種:在urls檔案中匯入login_requtred,直接裝飾as_view()函式

url(r'^$', login_required(userinfoview.as_view()), name='user')

第二種:自定義乙個loginrequiredview類繼承view類,重寫as_view()函式,並裝飾as_view()函式的返回值。 我們自定義的檢視類就不需要再繼承view類,直接繼承loginrequiredview類就好了。

class loginrequiredview(view):

@classmethod

def as_view(cls, **initkwargs):

# 呼叫view類中as_view方法

view = super(loginrequiredview, cls).as_view(**initkwargs)

# 呼叫login_required裝飾器

return login_required(view)

第三種:自定義乙個loginrequiredmixin類,重寫as_view()函式,呼叫view中的as_view()函式,並裝飾as_view()函式的返回值。 我們自定義的檢視類需要先繼承loginrequiredmixin類再繼承view類。這種方式的關鍵點在於:多繼承中super()的呼叫順序和__mro__的順序是一樣的。

class loginrequiredmixin(object):

@classmethod

def as_view(cls, **initkwargs):

# 呼叫view類中as_view方法

view = super(loginrequiredmixin, cls).as_view(**initkwargs)

# 呼叫login_required裝飾器

return login_required(view)

本文標題: 基於django使用者認證系統詳解

本文位址:

Django 使用者認證系統

二 auth模組 django內建乙個使用者認證系統,使用auth模組實現。auth模組提供了登入 註冊 效驗 修改密碼 登出 驗證使用者是否登入等功能。auth user 使用者表 auth user groups 使用者所屬組的表 auth user user permissions 使用者許可...

Django 使用者認證系統 基本設定

本教程為系列教程,為方便閱讀,每篇教程開頭列出全部教程的目錄索引 提供登入 註冊等使用者認證功能是乙個常見的需求。因此,django 提供了一套功能完整的 靈活的 易於拓展的使用者認證系統 django.contrib.auth。在本教程中,我將向你展示 auth 模組的基本用法,例如如何提供使用者...

Django中的使用者認證系統

auth模組是django提供的標準許可權管 系統,可以提供使用者身份認證,使用者組和許可權管 django 內建了user模型,包含了username,password,email等字段資訊。但是實際使用時,可能會包含一些其他的字段資訊,例如手機號,頭像,簽名資訊等。此時需要在系統的user模型上...