認證組件
authentication
"""
系統:session認證
rest_framework.authentication.SessionAuthentication
ajax請求經過認證:
cookie中要攜帶 sessionid、csrftoken,請求頭中要攜帶 x-csrftoken
第三方:jwt認證
rest_framework_jwt.authentication.JSONWebTokenAuthentication
ajax請求經過認證:
請求頭中要攜帶 authorization,值爲 jwt空格token
自定義:基於jwt、其它
1)自定義認證類,繼承BaseAuthentication(或其子類),重寫authenticate
2)authenticate中完成
拿到認證標識 auth
反解析出用戶 user
前兩步操做失敗 返回None => 遊客
前兩步操做成功 返回user,auth => 登陸用戶
注:若是在某個分支拋出異常,直接定義失敗 => 非法用戶
"""
自定義認證類:基於jwt
from rest_framework.exceptions import AuthenticationFailed
import jwt
from rest_framework_jwt.authentication import BaseJSONWebTokenAuthentication
from rest_framework_jwt.authentication import jwt_decode_handler
普通自定義認證類
from rest_framework.authentication import BaseAuthentication
def authenticate(self, request):
auth = 從request中獲得
user = 從auth中獲得
if not user:
return None
return user, auth