【发布时间】:2022-12-23 09:59:21
【问题描述】:
我制作了一个带有外部认证服务器的类星体应用程序。登录后,我收到访问和刷新令牌。在我按下注销之前,刷新令牌不会过期。访问令牌在 10 分钟后过期。因此,由于我需要访问令牌来获取数据,因此在登录后的接下来 10 分钟内这是可能的。之后,我必须调用一个包含刷新令牌的 API 来获取新的访问令牌。 我的问题是,如何确保始终拥有有效的访问令牌而无需再次登录?
作为用户,我希望在注销之前登录并访问所有内容。如果我的应用程序只是闲置了 15 分钟,然后我想接收数据,那是不可能的。
我想以某种方式静默调用刷新令牌 api,但何时以及如何调用? 以特定时间间隔刷新令牌、更改页面或每次我想接收数据时刷新令牌是否常见? 我还没有找到有效的解决方案。
在启动文件中,我添加了刷新令牌方法。所以每次启动App,都会刷新token。例如,对于 iPhone 用户,应用程序不会完全关闭,因此在我手动完全关闭应用程序之前不会触发 init 方法。
我想在每次 API 调用太多之前刷新令牌。或者是吗?
【问题讨论】:
-
在你的 axios 启动文件中,你可以检查令牌是否存在,过期日期时间,...如果你的 access_token 过期,调用你的刷新令牌方法,获取新的访问令牌...我们可以想象一个
js axios.interceptors.request.use(config => { const store = securityStore() const isLoggedIn = store?.jwt; const expire = store.?expire expire > new Date() ? store.useRefreshToken().then(()=>{ return config })
标签: authentication jwt token access-token quasar-framework