簡単な紹介:ユーザーログインを検証します
2つの認証メカニズム:
情報は、ストレージサーバによって取得SESSION_IDできる1つのセッションのセッションである必要がある場合、各要求がサーバに到達し、キー値は、メモリ/ディスク/データベースに格納された情報を取得する必要がSESSION_ID
2トークントークン情報トークン内部にあったが、サーバーは、トークンだけで定義されたアルゴリズムに従って、必要な認証情報を取得することができます解決する必要があります。だから、メモリコストは、時間コスト
EG:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX3R5cGUiOjEsIm5iZiI6MTUyNjg4NjYzM30.CTZH48xD_TdtDZcgAd8exiCxkryXASruDCbRHsFFD5Y
JWT約3
JWT(JSONウェブトークン)認証トークンは、共通の標準を達成することです。
インストールJWTは設定4つのグローバル認証
プラグ
PIP3がJWT- djangorestframeworkインストール
グローバル設定の設定2を
ここで注目すべきは、すべてのVIEWのことを確認します
REST_FRAMEWORK = {
#証明機関
(「DEFAULT_PERMISSION_CLASSES」は
「rest_framework.permissions.IsAuthenticated」
)、
#認証
'DEFAULT_AUTHENTICATION_CLASSES':(
'rest_framework_jwt.authentication.JSONWebTokenAuthentication'、
'rest_framework.authentication.SessionAuthentication'、
'rest_framework.authentication.BasicAuthentication'
)
}
五整体使用
1登录完成后自动生成トークン并返回前端
rest_framework_jwt.settingsからインポートapi_settings
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
ユーザー= Account.objects.filter(ユーザ名=名)1次回()
ペイロード= jwt_payload_handler(ユーザ)
= jwt_encode_handlerトークン(ペイロード)
応答を返す{「トークン」トークン}
注:ユーザーがクエリセットのユーザクエリを運ぶための、本明細書のDjango、存在しなければならない
遠位VUEX読み取りおよびグローバル変数に格納された二つの変数
のグローバル遠位VUEに係る3各可変APIアクセスrequest.headerの構築
IF(store.getters.token){
にconsole.log( 'を入力することができ')
config.headers [ '許可'] = 'JWT'入手トークン+に()
}
このトークン形式:注意JWT +トークン、認可および下部ケースがなければなりませんされ
、APIポート4をテストします
六の関連する権利
1つのデフォルトの役割
1 AllowAnyはすべてせる
2のみのリリースを確認するためにisAuthenticated
3 IsAdminUserスーパー管理者
4 IsAuthenticatedOrReadOnlyは、ユーザーが他の認証リクエストを実行できるようになります。唯一の一つは、ユーザーが不正な要求できるようにする場合には、要求メソッドは、「安全」メソッド(GET、HEADやOPTIONS)の場合のみ。
2カスタム権限
カスタム権限を実装し、オーバーライドBasePermissionまたは、次の方法の両方を実装する
.has_permission(セルフ、リクエスト、ビュー)
.has_object_permission(セルフ、リクエスト、ビューを、OBJ)
。1要求がアクセスを許可された場合当局は、この方法は、それ以外の場合はFalseを返し、trueを返す
2ビューレベルのhas_permissionチェックが通る場合にのみ、インスタンスメソッドレベルのhas_object_permission呼び出します。