7

我正在使用 aws amplify 并且我知道令牌会在需要时自动刷新,并且这是在幕后完成的。

我需要做的是通过 Lambda 后端进程更改 cognito 用户池中用户的自定义属性。这是我能做到的,而且它正在工作。但是,Web 客户端用户永远不会看到这个新的自定义属性,我认为他们可以看到它的唯一方法是令牌是否被刷新,因为该值存储在 JWT 令牌中。

4

4 回答 4

1

截至 2021 年的正确解决方案是调用await Auth.currentAuthenticatedUser({bypassCache: true}).

于 2021-05-21T13:23:05.640 回答
1

以下是按需更新令牌的方法(强制)

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);
}

于 2019-04-10T14:18:04.923 回答
0

未记录,但您可以refreshSession在用户上使用该方法。您对 currentAuthenticatedUser 和 currentSession 的下一次调用将更新配置文件属性(和组)

User = Auth.currentAuthenticatedUser()
Session =  Auth.currentSession()

User.refreshSession(Session.refreshToken)
于 2018-10-10T17:31:35.470 回答
0

就像这里说的:

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

访问令牌和 ID 令牌有效期为 1 小时。使用 Amplify,您可以使用currentSessioncurrentUserInfoAuth课堂上获取有关会话的信息,以便能够检索有关令牌的信息。

于 2018-05-25T19:12:59.373 回答