google-cloud-firestore - 在 Firestore 中触发权限
问题描述
我已经能够为我的 Firestore 数据库设置权限,规则背后的逻辑是限制用户通过身份验证并属于特定域。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if isUserAndSignedIn();
}
}
function isUserAndSignedIn(){
return request.auth != null && request.auth.token.email.matches('.*@domain[.]com')
}
}
该规则按预期适用于 CRUD 操作,但不适用于触发器,在我的情况下,执行触发器时出现以下错误(云功能):
FirebaseError: Missing or insufficient permissions.
at new FirestoreError (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:348:28)
at JsonProtoSerializer.fromRpcStatus (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:5385:16)
at JsonProtoSerializer.fromWatchChange (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:5883:44)
at PersistentListenStream.onMessage (/srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:14779:43)
at /srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:14708:30
at /srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:14748:28
at /srv/node_modules/@firebase/firestore/dist/index.node.cjs.js:10612:20
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
任何想法如何在规则中解决这个问题?如何绕过数据库规则执行中的触发器?
解决方案
推荐阅读
- html - Visual Studio Code 中是否有通过单击类属性创建类选择器的快捷方式?
- web-crawler - 有没有办法绕过使用 Puppeteer 的爬虫的 perimeterx 检测?
- java - 在 Java 中向 JFrame 添加内容的位置问题
- .net-core - System.Text.Json 反序列化失败
- php - laravel route:group 包装器如何工作?
- php - 如何合并mysql表中的行
- java - AWS - 将目录从远程共享上传到 S3
- reactjs - React Native componentDidUpdate 道具未连接到主要组件?
- google-apps-script - 基于谷歌表中的简单 JSON 对象有效地命名列
- git - Netlify CMS 如何动态创建拉取请求?