AppSync控制台操作正常,React前端调用createHobbit提示无权限
解决AWS Amplify前端调用createHobbit突变的授权错误
以下是针对你遇到的Not Authorized to access createHobbit on type Mutation错误的排查和修复步骤:
1. 确认前端用户已完成认证
你的模型用了@auth(rules: [{ allow: owner }]),这要求调用突变的请求必须携带已认证的用户身份:
- 检查前端代码中是否在调用
createHobbit前完成了用户登录,比如执行过Auth.signIn()且登录状态有效。 - 可以通过以下代码验证当前登录状态:
如果返回未登录,必须先完成用户登录再调用突变接口。const user = await Auth.currentAuthenticatedUser(); console.log('当前登录用户:', user);
2. 验证Amplify配置正确性
- 确认
aws-exports.js文件已正确生成并引入到项目中,该文件包含AppSync和Auth的核心配置,通常在amplify push后自动生成。 - 若前端使用的认证模式与AppSync默认配置不一致,需在API调用时显式指定:
const createResponse = await API.graphql({ query: createHobbit, variables: { input: hobbit }, authMode: 'AMAZON_COGNITO_USER_POOLS' // 匹配你的AppSync授权模式 });
3. 确认Schema变更已同步到云端
如果修改了schema的@auth规则后没执行amplify push,云端的AppSync API不会更新授权逻辑:
- 执行
amplify status检查本地变更是否未同步 - 执行
amplify push将最新schema推送到云端,确保生成的突变操作带正确的授权规则
4. 检查IAM角色权限(若使用IAM认证)
如果前端用IAM作为认证模式,需确保对应的IAM角色有createHobbit的执行权限:
- 登录AWS控制台进入IAM服务,找到项目的前端Auth角色(通常命名为
amplify-<项目名>-<环境>-authRole) - 检查附加策略,确认包含以下权限(替换占位符为你的实际信息):
{ "Effect": "Allow", "Action": ["appsync:GraphQL"], "Resource": [ "arn:aws:appsync:<区域>:<账号ID>:apis/<API ID>/types/Mutation/fields/createHobbit" ] }
5. 核对AppSync控制台的授权配置
- 进入AppSync控制台,查看API的设置→默认授权模式,确保与前端使用的模式一致
- 查看Schema选项卡中自动生成的
createHobbit突变,确认其授权规则包含owner的正确配置
内容的提问来源于stack exchange,提问作者JimmyTheCode
相关产品推荐
相关产品推荐

