首頁 > 軟體

django驗證系統的具體使用

2023-08-28 18:05:29

user物件

使用者物件是認證系統的核心。django的認證框架中的使用者只有一個類

預設使用者的主要屬性

  • username
  • password
  • email
  • first_name
  • last_name

建立使用者

建立使用者最直接的方法是使用包含create_user()的函數

from django.contrib.auth.models import User
user=User.objects.create_user("username","email","password")

建立超級使用者

通過命令列方式建立超級使用者

python manage.py createsuperuser 

更改密碼

第一種:通過命令列方式

python manage.py changepassword (你的使用者名稱,如果沒有輸入,預設當前的使用者)

第二種:通過資料模型開修改

from django.contrib.auth.models importf User
user=User.objects.get(username=(需要修改的使用者名稱))
user.set_password("new password")
user.save()

驗證使用者

authenticate(request,username,password)
使用authenticate(request)來驗證使用者。它使用username和password作為引數來驗證,對每個身份驗證後端進行檢查。如果後端驗證有效,則返回一個User物件,如果沒有,將返回None

web請求認證

django使用sessions和中介軟體將身份驗證系統掛接到請求物件中

它們在每次請求都會提供request.user屬性。如果當前沒有使用者登入。這個屬性將會設定為AnonymousUser,否則將會被設定為user範例

你可以使用is_authenticatded區分兩者

唯讀屬性,始終返回 True (匿名使用者 AnonymousUser.is_authenticated 始終返回 False )。這是一種判斷使用者是否已通過身份認證的方法。這並不意味著任何許可權,也不會檢查使用者是否處於活動狀態或是否具有有效對談。即使通常你會根據 request.user 檢查這個屬性,以確定它是否被 AuthenticationMiddleware 填充(表示當前登入的使用者),但是你應該知道該屬性對於任何 User 範例都返回 True。

if request.user.is_authenticated:
    pass
else:
    pass

使用者如何登陸

如果有已驗證的使用者想新增到session中,將通過login()函數完成

login(request,user,)要在檢視中讓使用者登入,使用 login() 。它需要 HttpRequest 物件和 User 物件。通過 Django 的 session 框架, login() 會在 session 中儲存使用者的ID。

from django.contrib.auth import authenticate,login
def fun(request):
    username=request.POST("username")
    password=request.POST("password")
    user=authenticate(request,username=username,password=password)
    if user is not None:
        login(request,user)
    else:
        pass

使用者如何登出

logout(request)

如果已經通過django.contrib.auth.login()登入的使用者想要登出,可以使用logout()方法,需要傳入request

from django.contrib.auth import logout
def logout_view(request):
    logout(request)

限制對未登入使用者的存取

原始方式

限制存取頁面最原始的辦法就是檢查,request.user.is_authenticated並重定向到登入頁面

from django.conf import settings
from django.shortcuts import redirect
def my_view(request):
    if not request.user.is_authenticated:
        return redirect()

login_required裝飾器

作為快捷方式,你可以使用login_required()裝飾器

from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
    ...

login_required()會執行以下操作:

  • 如果使用者沒有登入,會重定向到settings.LOGIN_URL,並傳遞絕對路徑到查詢字串中,例如: /accounts/login/?next=/polls/3/ 。
  • 如果使用者已經登入,則正常執行檢視
  • login_required()也有可選引數login_url用來指定重定向的路由
  • 預設情況下,成功驗證時使用者跳轉的路徑儲存在名為 "next" 的查詢字串引數中。如果你希望這個引數使用不同名稱,請在 login_required() 中傳遞可選引數 redirect_field_name :

LoginRequired Mixin

使用基於類的檢視時,可以使用LoginRequiredMixin實現和login_required相同的行為。這個Mixin應該在繼承列表最左邊的位置

from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin,View):
    login_url="/login/"
    redirect_field_name="xxx"

到此這篇關於django驗證系統的具體使用的文章就介紹到這了,更多相關django 驗證系統內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com