Ch_*_*h_y 5 django token jwt angularjs django-rest-framework
我正在使用Django REST框架JWT Auth进行会话创建和权限,唯一的问题是:当我登录并且在令牌过期后我无法继续执行我想要的操作,除非我再次登录.我还没有完全理解为其他设置提供的文档.
因此,任何人都可以解释一种动态创建(和刷新)我的令牌的方法(遵循最佳实践),这样我就可以在登录时继续进行操作.
PS:我正在使用角度2作为我的前端,我在Http请求标头中插入令牌.谢谢.
And*_*ker 15
JWT令牌刷新有点令人困惑,我希望这个解释有所帮助.
issued at时间(iat在令牌中)expiration date(现在()+ 1小时,例如)iat永远不会改变,但expires 不会每次刷新改变当您想要扩展令牌时,会发生以下情况:
token到服务器端点/.../refresh/now() <= token.iat + JWT_REFRESH_EXPIRATION_DELTAnow() + JWT_EXPIRATION_DELTAissued at令牌中的值不会更改你有EXPIRATION=1 hour,和REFRESH_DELTA=2 days.当您登录时,您将获得一个标记,上面写着"创建时间:Jun-02-6pm".您可以刷新此令牌(或通过刷新从中创建的任何令牌)2天.这意味着,对于此登录,您可以在不重新登录的情况下使用令牌的最长时间是2天1小时.您可以每隔1秒刷新一次,但是在2天之后,服务器将完全停止允许刷新,为您留下有效1小时的最终令牌.(头疼).
您必须JWT_AUTH在django设置文件的设置中在后端启用此功能.我相信它默认是关闭的.以下是我使用的设置:
JWT_AUTH = {
# how long the original token is valid for
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=2),
# allow refreshing of tokens
'JWT_ALLOW_REFRESH': True,
# this is the maximum time AFTER the token was issued that
# it can be refreshed. exprired tokens can't be refreshed.
'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
}
Run Code Online (Sandbox Code Playgroud)
然后你可以调用JWT刷新视图,在你的身体中传递你的令牌(作为json)并获得一个新的令牌.详情请见http://getblimp.github.io/django-rest-framework-jwt/#refresh-token上的文档
$ http post localhost:8000/auth/jwt/refresh/ --json token=$TOKEN
Run Code Online (Sandbox Code Playgroud)
哪个回报:
HTTP 200
{
"token": "new jwt token value"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7139 次 |
| 最近记录: |