MongoDB Atlas删除文档遇403禁止错误,插入功能正常求助
解决MongoDB Stitch删除文档时的403 Forbidden错误
看起来你遇到了MongoDB Stitch函数删除文档时的403 Forbidden错误,好在插入功能正常,这大概率是权限配置的问题,我帮你梳理几个排查和解决的方向:
1. 检查集合的文档级权限设置
因为插入功能正常,说明你的应用已经拥有集合的insert权限,但delete权限可能没配置:
- 登录MongoDB Atlas控制台,找到你的集群,进入Collections页面,定位到
FbUsers数据库下的ClonedFbUsers集合。 - 点击集合的Security标签,查看当前的权限规则。
- 确认规则中是否包含
delete操作权限:- 如果是给认证用户开放全读写权限,可以添加这样的规则:
{ "roles": [ { "role": "readWrite", "db": "FbUsers", "collection": "ClonedFbUsers" } ] } - 如果需要更细粒度的控制(比如只允许用户删除自己的文档),可以设置文档级过滤:
{ "delete": { "owner_id": "%%user.id" } }
- 如果是给认证用户开放全读写权限,可以添加这样的规则:
2. 验证Stitch函数的调用权限
你调用的删除函数可能被限制了调用者范围:
- 进入Stitch控制台,找到你的
facebookclone-tlwvi应用,进入Functions页面,找到对应的删除函数。 - 查看函数的Permissions设置,确认是否允许当前认证用户(或所有认证用户)调用该函数。比如如果函数只允许管理员调用,普通用户发起请求就会返回403。
3. 检查函数的运行权限模式
Stitch函数有两种运行模式,权限范围不同:
- 在函数的Settings页面,查看是否启用了Run as System:
- 如果启用,函数会使用Stitch服务角色的权限(默认拥有全数据库权限),这时候应该不会出现权限问题;
- 如果没启用,函数会继承调用者的用户权限,这时候需要确保调用者拥有
ClonedFbUsers集合的delete权限。
4. 确认认证用户的角色
最后,检查发起请求时使用的认证用户是否拥有足够的权限:
- 在Stitch控制台的Users页面,查看该用户的角色分配,确认是否包含能执行删除操作的角色。
修改权限配置后,建议等待1-2分钟让设置生效,再重新测试删除功能。
内容的提问来源于stack exchange,提问作者joy_jlee
相关产品推荐
相关产品推荐

