作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将Django REST框架JWT Auth用于 session 创建和权限,唯一的问题是:登录时以及 token 过期后,除非再次登录,否则我无法继续执行所需的操作。而且我并不完全了解为附加设置提供的文档。
因此,谁能解释一种动态创建(和刷新) token (遵循最佳实践)的方法,以便在登录后继续进行操作。
P.S:我在前端使用angular 2,并将 token 插入Http request header 中。谢谢。
最佳答案
JWT token 刷新有些困惑,我希望这个解释能对您有所帮助。
issued at
时间( token 中的iat
)expiration date
(例如now()+ 1小时)iat
永远不会改变,但是expires
确实会随着每次刷新token
发送到服务器端点/.../refresh/
now() <= token.iat + JWT_REFRESH_EXPIRATION_DELTA
now() + JWT_EXPIRATION_DELTA
有效issued at
值不会更改EXPIRATION=1 hour
和
REFRESH_DELTA=2 days
。登录时,您会得到一个 token ,上面写着“created-at:Jun-02-6pm”。您可以将此 token (或通过刷新创建的任何 token )刷新2天。这意味着,对于该登录,您无需重新登录即可使用 token 的最长时间为2天零1个小时。您可以每1秒钟刷新一次,但是2天后服务器将完全停止允许刷新,并为您提供1小时有效的最终 token 。 (头疼)。
JWT_AUTH
设置的后端中启用此功能。我相信默认情况下它是关闭的。这是我使用的设置:
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),
}
$ http post localhost:8000/auth/jwt/refresh/ --json token=$TOKEN
HTTP 200
{
"token": "new jwt token value"
}
关于angularjs - Django Rest Framework JWT : How to change the token expiration time when logged in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780955/
我是一名优秀的程序员,十分优秀!