如何在代码中判断当前已认证用户是否属于Amplify Studio的Admin组?
判断Amplify认证用户是否属于Admin组的代码实现
要检查当前已认证用户是否属于你在Amplify Studio创建的Admin组,可通过AWS Amplify的Auth模块实现,以下是具体步骤:
1. 导入Auth模块
确保项目已配置Amplify Auth,先导入所需模块:
import { Auth } from 'aws-amplify';
2. 封装检查函数
编写异步函数获取用户信息并验证组归属:
async function isUserInAdminGroup() { try { const user = await Auth.currentAuthenticatedUser(); // 从JWT payload中读取用户组列表,判断是否包含Admin return user.signInUserSession.accessToken.payload['cognito:groups']?.includes('Admin'); } catch (err) { // 用户未登录或获取信息失败时返回false console.error('Failed to fetch user info:', err); return false; } }
3. 调用函数验证权限
在需要验证的场景中调用该函数:
// 示例:在组件或业务逻辑中使用 isUserInAdminGroup().then(isAdmin => { if (isAdmin) { // 执行Admin专属操作,比如显示管理面板 console.log('User is in Admin group'); } else { // 处理非Admin用户逻辑,比如提示权限不足 console.log('User is not in Admin group'); } });
注意事项
cognito:groups是Cognito用户池默认的组字段键,无需自定义即可直接使用。- 若用户未完成认证,
Auth.currentAuthenticatedUser会抛出异常,catch块中返回false,你可根据业务需求调整未登录场景的处理逻辑。 - 对于React/Vue等框架,可结合生命周期钩子或状态管理来使用这个验证函数。
内容的提问来源于stack exchange,提问作者juri88
相关产品推荐
相关产品推荐

