AWS Cognito,使用 amplify 检查经过身份验证的用户是否在组中或者是否是管理员

Mat*_*ano 2 reactjs amazon-cognito aws-amplify

我试图通过检查它是否属于特定组来确定经过身份验证的用户是否是管理员。我在我的 React 应用程序中使用 amplify 并尝试了多种方法,例如Auth.currentUserInfo()Auth.currentAuthenticatedUser()并且还获取 jwt 令牌以查看它是否以某种方式返回到令牌中,但我没有找到任何相关信息。我看到有人说这里的payload cognito:groups令牌中存在 a ,但这可能会改变,因为在我返回的令牌中它不存在。

我认为可行的另一件事是 jwt 中的范围(aws.cognito.signin.user.admin),但似乎每个使用 amplify 创建的用户都会返回此范围。

是否可以检查经过身份验证的用户是否属于某个组或者是否是 Cognito 的管理员用户?

Dyl*_*lan 7

您可以从会话中获取用户组。其中user.signInUserSession.accessToken.payload["cognito:groups"]将包含用户所有组的数组。

这是一个简短的例子:

import { Auth } from 'aws-amplify';

const user =  await Auth.currentAuthenticatedUser();

// the array of groups that the user belongs to
user.signInUserSession.accessToken.payload["cognito:groups"]
Run Code Online (Sandbox Code Playgroud)

  • 超级感谢迪伦,我尝试了几种方法,但这个和你的答案正是我需要的,再次感谢你! (3认同)