drf框架中認證與權限工做原理及設置

0909自我總結

drf框架中認證與權限工做原理及設置

一.概述

1.認證

工做原理python

  • 返回None => 遊客
  • 返回user,auth => 登陸用戶
  • 拋出異常 => 非法用戶

前臺對於用戶信息進行的判斷django

1)若是前臺沒有攜帶認證信息,直接定義爲遊客數組

2)若是前臺攜帶了認證信息並認證經過,定位爲登陸用戶,將登陸的用戶user對象保存在 requset.user 中session

3)若是前臺攜帶了認證信息但沒有認證經過,通常都定義爲遊客框架

4 ) 能夠自定義爲非法用戶,拋出 認證失敗 異常,可是不建議直接操做,能夠交給權限組件進一步處理rest_framework.exceptions 的 AuthenticationFailed網站

參數rest

  • BasicAuthentication : 基本認證code

  • SessionAuthentication : session認證對象

2.權限

工做原理get

  • 返回False => 沒有權限,將信息返回給前臺
  • 返回True => 擁有權限,進行下一步認證(頻率認證)

相關設置

  • AllowAny:容許全部用戶
  • IsAuthenticated:只容許登陸用戶
    • 必須request.user和request.user.is_authenticated都經過
  • IsAuthenticatedOrReadOnly:遊客只讀,登陸用戶無限制
    • get、option、head 請求無限制
    • 前臺請求必須校驗 request.user和request.user.is_authenticated
  • IsAdminUser:是不是後臺用戶
    • 校驗 request.user和request.user.is_staff is_staff(能夠登陸後臺管理系統的用戶)

二.局部設置

即在咱們自定義的視圖類開頭設置

# 認證 下面不必定是[],也能夠()就是須要在數組當中,多個類用,隔開
# 局部取消認證組件:authentication_classes = []
# 區別啓用認證組件:authentication_classes = [認證類們] 
# 填寫的參數BasicAuthentication,SessionAuthentication 


# 權限
# 局部取消權限組件:permission_classes = []
# 區別啓用權限組件:permission_classes = [權限類們]
# 填寫的參數AllowAny

from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
 
class 類名(APIView):
    authentication_classes = (SessionAuthentication, BasicAuthentication)
    permission_classes = [IsAuthenticated,]
    ...........

三.全局設置

setting中設置

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        # django默認session校驗:校驗規則 遊客 及 登陸用戶
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        # 'rest_framework.permissions.AllowAny',
        # 全局配置:一站式網站(全部操做都須要登陸後才能訪問)
        # 'rest_framework.permissions.IsAuthenticated',
    ],
}

四.失敗返回的內容

  • 401 Unauthorized 未認證
  • 403 Permission Denied 權限被禁止
相關文章
相關標籤/搜索