使用 fb 身份验证的 firebase json db 安全规则
Posted
技术标签:
【中文标题】使用 fb 身份验证的 firebase json db 安全规则【英文标题】:firebase json db security rule using fb authentication 【发布时间】:2018-03-13 19:03:53 【问题描述】:我正在为我的移动应用程序使用 ionic 3 angular,并且使用 fb 本机 cordova 插件登录。
firebase db 安全文档使用类似
的语法
"rules":
"users":
"$user_id":
".write":"$user_id === auth.id"
我的应用程序中的 fb 身份验证如下所示
doLogin()
if (this.platform.is('cordova'))
return this.fb.login(['email', 'public_profile']).then(res =>
const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken);
firebase.auth().signInWithCredential(facebookCredential);
this.navCtrl.setRoot(TabsPage);
)
我的问题是 auth firebase 变量在上面的代码中得到了处理,或者我需要一些额外的东西来让 auth 获得所需的 uid 等?
【问题讨论】:
【参考方案1】:auth firebase 变量在理论上是由令牌管理的:假设您已经启用了 Facebook 登录方法。但是,您显示的 数据库 规则不一定相关。
这些规则(同上):
"rules":
"users":
"$variable": ".write": "$variable=== auth.uid"
规定用户只能写入具有相同 uid 的子节点。我将$user_id
更改为$variable
以突出显示$
只是表示一个代表子节点名称的变量。
(我可能应该提到它应该是auth.uid
而不是auth.id
)
这用于保存用户特定的数据。所以,当他们注册时,你可以有一个功能说
firebase.database().ref('users').child(firebase.auth().currentUser.uid).update(<your custom data here>);
*请注意用户的孩子是“firebase.auth().currentUser.uid”,可以选择从firebase.auth().signInWithCredential()
promise 中检索。
抱歉,如果解释过于必要。简而言之。登录后,uid 始终与 firebase.auth().currentUser.uid
一起出现,并且该 uid 是数据库规则在 auth.uid
中所指的内容,最后,auth/uid/etc 几乎 100% 由 firebase 处理。
【讨论】:
是的,主要目的是询问它是否得到照顾。我没有过多关注确切的规则定义以上是关于使用 fb 身份验证的 firebase json db 安全规则的主要内容,如果未能解决你的问题,请参考以下文章
以管理员身份使用自定义令牌向 FB DB 发出 REST 请求
如何使用 Firebase 规则进行身份验证(RESTful)
将 Wordpress 用户导入 Firebase 身份验证