如果我问错了地方,很抱歉。我正在使用Django drf for api,并在我的应用程序中使用react的前端服务。我正在使用simplejwt进行身份验证,我想检查访问过期,并从react刷新令牌,以便在过期时生成访问令牌。有什么更好的建议吗?
发布于 2019-11-23 06:26:47
基于simplejwt参考
2个JWT令牌由access
和refresh
生成
refresh
是long living,而access
是short living。
如果您access
过期,请使用refresh
令牌获取访问令牌
示例
curl \
-X POST \
-H "Content-Type: application/json" \
-d '{"refresh":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImNvbGRfc3R1ZmYiOiLimIMiLCJleHAiOjIzNDU2NywianRpIjoiZGUxMmY0ZTY3MDY4NDI3ODg5ZjE1YWMyNzcwZGEwNTEifQ.aEoAYkSJjoWH1boshQAaTkf8G3yn0kapko6HFRt7Rh4"}' \
http://localhost:8000/api/token/refresh/
响应:
{"access":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiY29sZF9zdHVmZiI6IuKYgyIsImV4cCI6MTIzNTY3LCJqdGkiOiJjNzE4ZTVkNjgzZWQ0NTQyYTU0NWJkM2VmMGI0ZGQ0ZSJ9.ekxRxgb9OKmHkfy-zs1Ro_xs1eMLXiR17dIDBVxeT-w"}
您可以在配置中配置这两个令牌的有效期
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
不过,如果您想要手动生成
from rest_framework_simplejwt.tokens import RefreshToken
def get_tokens_for_user(user):
refresh = RefreshToken.for_user(user)
return {
'refresh': str(refresh),
'access': str(refresh.access_token),
}
get_tokens_for_user
将返回新刷新和访问令牌的序列化表示形式
https://stackoverflow.com/questions/59005030
复制相似问题