Pythonは、jwtに基づく認証メカニズムプロセス分析を実装します

1 JWT長所と短所

jwtの利点:

1.分散シングルサインオンを実装すると非常に便利です

2.データは実際にはクライアントに保存されるため、データベースまたはサーバーのストレージ圧力を共有できます

jwtのデメリット:

1.データはクライアントに保存されます。サーバーはjwtのみを認識し、クライアントは認識しません。2. Jwtは有効期限を設定できますが、データはクライアントに保存されるため、有効期限の調整は簡単ではありません。

2.jwtをインストールします

pip install djangorestframework-jwt -i https://pypi.douban.com/simple

3.settings.devで

REST_FRAMEWORK = { 
  'DEFAULT_AUTHENTICATION_CLASSES' :(
    'rest_framework_jwt.authentication.JSONWebTokenAuthentication'、
    'rest_framework.authentication.SessionAuthentication'、
    'rest_framework.authentication.BasicAuthentication'、
  )、
} 
import datetime 
JWT_AUTH = { 
  'JWT_EXPIRATION_ 1)、##認証トークン的有効率值
}


4.手動でjwtを生成します

rest_framework_jwt.settingsからimportapi_settings 
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER 
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
 
ペイロード= jwt_payload_handler(user)
トークン= jwt_encode_handler(payload)


5.バックエンドは、ログイン認証インターフェイスを実装します(サブアプリケーションルーティングurls.py内)

from rest_framework_jwt.views import get_jwt_token 
urlpatterns = [ 
  path(r'login / '、get_jwt_token)、##提供接口
]


6.カスタムリターンデータ(user.utils.jwt_response_payload_handlerのパスの下)

def jwt_response_payload_handler(token、user = None、request = None):
  "" "
  カスタムjwt認証はデータを正常に返します
  " "" 
  return { 
    'token':token、
    'id':user.id、
    'username':user.username 
  }#これは、正常に返されたカスタムjwt認証であり、通常、サブアプリケーションの下のutilsファイルに配置され、設定で構成され、djangoにパスを通知します。


7.settings.dev構成ファイルを変更します

#JWT 
JWT_AUTH = { 
  'JWT_EXPIRATION_DELTA':datetime.timedelta(日= 
  1)、'JWT_RESPONSE_PAYLOAD_HANDLER': 'user.utils.jwt_response_payload_handler' 
}


以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。


おすすめ

転載: blog.51cto.com/14825302/2547219