一、會話保持
二、
cookie:客戶端瀏覽器上的鍵值對,缺陷是:資料不安全 之后有了 session:服務端的鍵值對(記憶體,資料庫,redis,檔案),客戶端只放一個隨機字串,安全(即便是泄露,也只是單個人的隨機字串被泄露,別人的猜不出來),缺陷是:對服務端壓力大 之后有了 token:分三段:頭.荷載.簽名 -header(公司資訊,加密方式,,,) -payload(荷載,真正有用的資料部分,放用戶id,用戶名字,,(是拼在token串中的,所以就放在客戶端了,客戶端發請求會攜帶過去,這樣子像cookie當然不安全,
所以有了signature)) -signature(簽名,為了安全,把頭和荷載部分通過不可逆加密演算法加密---》得到一個簽名)
比如token:
head.{name:lili,age:18}.eseetsweasdca
base64加碼后變成:
asdfasfd.asdfasdf.asdfasdfaeraew
因為token框架都要用,所以網上開源出drf-jwt模塊
-更詳細看演變:https://www.cnblogs.com/liuqingzheng/articles/9509779.html
三、drf-jwt模塊
1.快速使用
-快速使用:(默認使用的是auth的user表) -1 創建用戶 -2 在路由中配置path('login/', obtain_jwt_token), -3 在postman中測驗,用戶名密碼輸入剛剛創建的用戶就可以生成token -4 讓一個視圖必須登錄以后才能訪問 -authentication_classes = [JSONWebTokenAuthentication, ] #認證(此認證類即可的登錄訪問,又可不登錄訪問,所以要加權限) -permission_classes = [IsAuthenticated,]#權限 -5 讓一個視圖可以登錄后訪問,也可以不登錄訪問 -authentication_classes = [JSONWebTokenAuthentication, ] -6 用postman測驗,在請求頭中加入 -key:Authorization value:jwt+空格+token串
2.自己寫基于jwt的認證類(登錄了能訪問,不登錄就不能訪問)
-自己寫基于jwt的認證類(登錄了能訪問,不登錄就不能訪問) class JwtAuthentication(BaseJSONWebTokenAuthentication): def authenticate(self, request): #取出token token=request.GET.get('token') token=request.META.get('HTTP_AUTHORIZATION') try: # 驗證token是否正確 payload = jwt_decode_handler(token) except jwt.ExpiredSignature: raise AuthenticationFailed('過期了') except jwt.DecodeError: raise AuthenticationFailed('解碼錯誤') except jwt.InvalidTokenError: raise AuthenticationFailed('不合法的token') #也可以只寫一個except Exception('token不合法') user=self.authenticate_credentials(payload) return (user, token) -自定制認證類的使用方式: -全域使用 -區域使用
-更詳細JWT請看:https://www.cnblogs.com/guojieying/p/13966264.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/225962.html
標籤:架構設計
