我正在尝试通过检查经过身份验证的用户是否属于特定组来识别其身份。
我在React应用程序中使用amplify并尝试了几种方法,例如Auth.currentUserInfo()
,Auth.currentAuthenticatedUser()
,还获取了jwt令牌以查看令牌中是否以某种方式返回了该令牌,但是我没有找到任何方法有关的信息。
我看到有人说令牌here中存在一个payload cognito:groups
,但是可以更改,因为在我返回的令牌中它不存在。
我认为可行的另一件事是jwt中的作用域(aws.cognito.signin.user.admin),但似乎每个使用amplify创建的用户都将返回此作用域。
是否可以检查经过身份验证的用户是否属于某个组,或者它是否是cognito的管理员用户?
答案 0 :(得分:2)
您可以从会话中获取用户组。它位于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"]