如何在模型中访问JWT_AUTH变量以创建JWT令牌

时间:2017-10-13 05:38:53

标签: python django django-rest-framework jwt

在我的settings.py

    JWT_AUTH = {
        'JWT_ENCODE_HANDLER':
        'rest_framework_jwt.utils.jwt_encode_handler',
        'JWT_DECODE_HANDLER':
        'rest_framework_jwt.utils.jwt_decode_handler',

       'JWT_PAYLOAD_HANDLER':
       'rest_framework_jwt.utils.jwt_payload_handler',

       'JWT_PAYLOAD_GET_USER_ID_HANDLER':
       'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',

       'JWT_RESPONSE_PAYLOAD_HANDLER':
       'rest_framework_jwt.utils.jwt_response_payload_handler',

       'JWT_SECRET_KEY': settings.SECRET_KEY,
       'JWT_GET_USER_SECRET_KEY': None,
       'JWT_PUBLIC_KEY': None,
       'JWT_PRIVATE_KEY': None,
       'JWT_ALGORITHM': 'HS256',
       'JWT_VERIFY': True,
       'JWT_VERIFY_EXPIRATION': True,
       'JWT_LEEWAY': 0,
       'JWT_EXPIRATION_DELTA': datetime.timedelta(hours=1),
       'JWT_AUDIENCE': None,
       'JWT_ISSUER': None,

       'JWT_ALLOW_REFRESH': True,
       'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),

       'JWT_AUTH_HEADER_PREFIX': 'JWT',
       'JWT_AUTH_COOKIE': None,
}

api_settings = APISettings(JWT_AUTH)

这个代码块在我的Models.py

def _generate_jwt_token(self):
     dt = datetime.now() + timedelta(days=60)

     token = jwt.encode({
         'id': self.pk,
         'exp': int(dt.strftime('%s'))
     }, settings.SECRET_KEY, algorithm='HS256')

     return token.decode('utf-8')

我想要从JWT_AUTH(settings.py)中替换settings.SECRET_KEY, algorithm='HS256'

我试过以下这些

来自rest_framework.settings的

导入api_settings

api_settings.JWT_AUTH['JWT_SECRET_KEY']

来自django.conf导入设置

settings.JWT_AUTH [' JWT_SECRET_KEY'] - >这有效,但不知道这是正确的方法。

0 个答案:

没有答案