我试图通过检查它是否属于特定组来确定经过身份验证的用户是否是管理员。 我在我的 React 应用程序中使用 amplify 并尝试了几种方法,例如
Auth.currentUserInfo()
、Auth.currentAuthenticatedUser()
以及获取 jwt 令牌以查看它是否以某种方式返回到令牌中,但我没有找到任何相关信息。
我看到有人说令牌中存在payload cognito:groups
这里,但这可能会改变,因为在我返回的令牌中它不存在。
我认为可行的另一件事是 jwt 中的范围(aws.cognito.signin.user.admin),但似乎每个使用 amplify 创建的用户都会返回此范围。
是否可以检查经过身份验证的用户是否属于某个组或者是否是 Cognito 的管理员用户?
您可以从会话中获取用户组。它位于
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"]
Auth.currentAuthenticatedUser()
在 v6 中已弃用。这是我在 v6 中的做法。
import { fetchAuthSession } from "aws-amplify/auth";
const { tokens } = await fetchAuthSession();
console.log("user belongs to following groups: " + tokens.accessToken.payload["cognito:groups"])