我使用 AWS Cognito 服务进行身份验证。在我的 Angular 7 应用程序中,我使用 Amplify Auth 来保护我的页面。
如果用户在不同页面之间导航,Amplify 将自动处理令牌刷新,并且他们不会看到令牌过期。
如果用户长时间停留在一个页面,则令牌将不会刷新,最终用户将看到过期的令牌,并会收到 403 的 Web 服务调用。
如果用户长时间停留在同一页面,有什么好的解决方案可以刷新访问/ID 令牌吗?
大概有两种方式:
- 使用 Auth.currentSession() 获取当前有效令牌,如果当前已过期,则获取新令牌。放大会处理它
- 作为后备方案,使用一些间隔作业每隔 x 分钟(也许 10 分钟)按需刷新令牌。当您有一个长时间运行的过程(例如上传一个非常大的视频,需要一个多小时(可能是由于网络速度较慢))时,这是必需的,那么您的令牌将在上传过程中过期,并且 amplify 不会自动为您更新。在这种情况下,这个策略将会起作用。每隔一段时间不断更新您的令牌。
文档中没有提到如何按需刷新,所以这里是。
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 https://github.com/aws-amplify/amplify-js/issues/2560
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)