首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Oidc-Client中获取静默令牌的过期时间

如何在Oidc-Client中获取静默令牌的过期时间
EN

Stack Overflow用户
提问于 2020-08-25 17:24:21
回答 2查看 2K关注 0票数 0

我有SPA开发的应用程序,我用来实现Oidc的OAUTH认证和以下是澄清。

  1. 如何在基于角结构的项目中使用web配置文件配置静默刷新页面,因为在令牌过期时不会调用静默刷新. How。
  2. 即使生成了静默令牌,如何获取/设置静默生成令牌的过期时间?

请帮忙并提出建议。

EN

回答 2

Stack Overflow用户

发布于 2020-08-25 19:47:04

静默刷新

我个人的首选不是单独的HTML页面,而是通过对index.html页面的无声令牌更新响应来处理这个问题。然后编写如下代码:

代码语言:javascript
复制
if (window.top === window.self) {

    // Run the main app
    const app = new App();
    app.execute();

} else {

    // If our SPA is running on an iframe, handle token renewal responses
    const app = new IFrameApp();
    app.execute();
}

我发现这种方法避免了增加WebPack / build系统的复杂性。除了接收无声的令牌更新响应外,iframe应用程序的代码只做了很少的事情。

到期

有趣的是,为什么要直接使用访问令牌过期时间。您可以得到这样的值:

代码语言:javascript
复制
const user = await this._userManager.getUser();
if (user) {
  console.log(user.expires_at);
}

这里真正的要求是确保当API调用由于过期的访问令牌而失败时,避免为最终用户提供错误。这最好通过以下操作来处理:

  • 如果API调用与401状态代码失败
  • 然后尝试获得一个新的访问令牌,通常通过userManager.signInSilent()
  • 然后用新的访问令牌重试API调用。

因此,调用API的方式应该有一个带有某种重试逻辑的助手类,如我的示例这里所示。

票数 0
EN

Stack Overflow用户

发布于 2021-07-14 06:47:57

若要在静默刷新后得到通知,请为userLoaded: UserManager.events.addUserLoaded添加一个事件处理程序。这将传递具有新过期时间的新用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63584095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档