gpt4 book ai didi

angular - 如何在页面中自动刷新 Cognito Token

转载 作者:行者123 更新时间:2023-12-05 04:01:45 24 4
gpt4 key购买 nike

我使用 AWS Cognito 服务进行身份验证。在我的 Angular 7 应用程序中,我使用 Amplify Auth 来保护我的页面。

如果用户在不同页面之间导航,Amplify 将自动处理 token 刷新,他们不会看到 token 过期。

如果用户长时间停留在一个页面上,那么 token 将不会被刷新,最终用户会看到过期的 token ,并会收到 403 请求 Web 服务调用。

如果用户长时间停留在同一页面,有什么好的解决方案可以刷新访问/ID token ?

最佳答案

可能有两种方式:

  1. 使用 Auth.currentSession() 获取当前有效的 token ,或者如果当前已过期则获取新的。 Amplify 会处理它
  2. 作为回退,使用一些间隔作业每 x 分钟(也许 10 分钟)按需刷新 token 。当您有一个长时间运行的过程时,这是必需的,例如上传一个需要一个多小时的非常大的视频(可能是由于网络速度慢),然后您的 token 将在上传过程中过期并且放大不会为您自动更新。在这种情况下,该策略将起作用。每隔一段时间继续更新您的 token 。文档中没有提到如何按需刷新,所以在这里。
import { Auth } from 'aws-amplify';

try {
const cognitoUser = await Auth.currentAuthenticatedUser();
const currentSession = await Auth.currentSession();
cognitoUser.refreshSession(currentSession.refreshToken, (err, session) => {
console.log('session', err, session);
const { idToken, refreshToken, accessToken } = session;
// do whatever you want to do now :)
});
} catch (e) {
console.log('Unable to refresh Token', e);
}

更多信息:https://github.com/aws-amplify/amplify-js/issues/2560

关于angular - 如何在页面中自动刷新 Cognito Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com