【发布时间】:2021-11-22 13:26:08
【问题描述】:
我正在为我的项目后端使用 firebase 实时数据库,但在制定安全规则时遇到了问题。我使用 REST 与数据库通信并授权 REST 请求,我根据https://firebase.google.com/docs/database/rest/auth 发送一个 idToken 作为“auth =”参数的查询。
Firebase 仅检测到我已获得授权,但当我比较数据库规则中的 auth.uid 时,它们并不相同。我设置了自己的服务器,如果我解码令牌,我发现它确实保存了用户的正确信息。
这是我想要实现但不起作用的数据库规则:
{
"rules": {
"$uid": {
".read": "auth.uid === $uid",
".write": "auth.uid === $uid"
}
}
}
但这些规则确实有效,这意味着我已获得授权。为什么 auth 对象不保存实际的用户 ID,而是保存 auth.uid 的其他值?
"rules": {
"$uid": {
".read": "auth != null",
".write": "auth != null"
}
}
}
为什么 firebase 对令牌的解码方式不同?我什至可以访问发送到规则的身份验证对象吗?
【问题讨论】:
标签: node.js firebase firebase-realtime-database firebase-security