我使用Django REST框架JWT Auth进行会话创建和权限,唯一的问题是:登录时以及令牌过期后,除非再次登录,否则我无法继续html" target="_blank">执行所需的操作。而且我
还不完全了解为其他设置提供的文档 。
因此,谁能解释一种动态创建(和刷新)令牌(遵循最佳实践)的方法,以便在登录后继续进行操作。
PS:我在前端使用angular 2,并将令牌插入Http request标头中。谢谢。
JWT令牌刷新有些混乱,我希望这个解释能对您有所帮助。
issued at
时间(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
。登录时,您会得到一个令牌,上面写着“ created-
at: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),
}
然后,您可以调用JWT刷新视图,将您的令牌传递到正文中(作为json)并获取新的令牌。有关详细信息,请参见http://getblimp.github.io/django-
rest-framework-jwt/#refresh-token中的文档
$ http post localhost:8000/auth/jwt/refresh/ --json token=$TOKEN
哪个返回:
HTTP 200
{
"token": "new jwt token value"
}
我正在尝试更改访问令牌Laravel Passport的过期日期。 以下是我尝试过的: AuthServiceProvider 用户控制器 但是没有成功。在字段的数据库中,过期日期没有更改,默认情况下仍然是一年。 我正在尝试这样做,因为我想在访问令牌过期时重定向到登录表单。我怎么能做到呢? 我也不确定刷新令牌会发生什么,它是否会返回另一个访问令牌,并且用户不需要授权?
嗨,我已经在springboot中实现了Spring Security性。现在我希望登录到期时间为10分钟,以便到期后页面将重定向到页面`@Configuration@EnableWebSecurity公共类ApplicationSecurityConfiguration extends websecurityconfigureradicater{ } `
由于GCM不断更新,我搜索的大多数资源似乎都过时或不清楚。基本上,我对代币和ID的到期时间感到困惑。(作为参考,我正在使用Android。) 据我所知(如果我错了,请纠正我),我的服务器有一个API密钥和一个发件人ID。使用发件人ID,我可以让我的客户端通过本地存储在我的客户端上的InstanceID请求令牌。我已经有点困惑了。InstanceID在我的应用上线时被分配?它会改变吗?当应用程序升级
我对android Gcm令牌过期策略很好奇。当我希望向Gcm服务注册的设备能够接收Gcm推送消息时,我将向API注册它。 然后我会得到一个Gcm令牌“a”。如果我从未在play store上升级我的应用程序版本代码。谷歌会用“B”刷新它并自动终止“A”吗? 如果是,它什么时候做。我看过一些文章说,一旦“A”被“B”刷新,那么当服务器试图向“A”发送消息时,服务器将获得新的注册标识“B”。我现在想
当我从Google API获得一个< code>access_token时,它带有一个< code>expires_in值。根据文档,该值表示“访问令牌的剩余寿命”。 这个值的单位是多少?
我用ReactJS做单页网页登录。问题是如何以及在哪里保存令牌过期时间。我需要保存在sessionStore中,但当浏览器关闭时,所有的数据都将被删除。本地商店?但数据将永远。或者我可以在localStore中保存并在每个事件中添加函数,该函数检查localStore的过期时间,当事件触发成功时再次更新localStore?但代码看起来很可怕...性能问题呢?这大概可以接受吗?