使用Session Cookie授权时,Firestore安全规则中request.auth能否使用?
结论:使用Session Cookie进行授权时,Firestore安全规则里的request.auth无法生效
这和你提到的官方说明完全对应:出于安全原因,Firebase会话Cookie不能与Firestore等其他Firebase客户端服务配合使用,它支持最长2周的自定义有效期,这种设计决定了它只能用于你的后端服务做用户身份验证,无法直接被Firestore的安全规则识别。
如果要在Session Cookie的场景下控制Firestore访问权限,你需要通过后端代理请求的方式实现:
- 前端将Session Cookie发送到你的后端服务
- 后端用Firebase Admin SDK验证Session Cookie有效性,获取用户UID等身份信息
- 后端要么直接通过Admin SDK操作Firestore(Admin SDK不受安全规则限制),要么在转发给Firestore的请求中附带合法的用户身份标识,再在安全规则中通过自定义字段(比如请求头、文档字段)做权限校验
举个安全规则调整的示例(配合后端传递的自定义请求头):
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /users/{uid} { allow read, write: if request.headers.get('X-Authenticated-UID') == uid; } } }
这种方式下,后端必须严格验证Session Cookie后才会添加X-Authenticated-UID请求头,确保权限校验的安全性。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

