有没有一种方法可以让我以 Firebase 的管理员身份向 Firebase 进行身份验证,以便对其进行完全读/写访问(已经有保护部分内容的安全规则),或者我是否必须编写一个安全规则,以某种方式允许我访问完整的firebase,例如通过提供某个密码/密钥。
是否有标准或建议的方式来做到这一点?
有没有一种方法可以让我以 Firebase 的管理员身份向 Firebase 进行身份验证,以便对其进行完全读/写访问(已经有保护部分内容的安全规则),或者我是否必须编写一个安全规则,以某种方式允许我访问完整的firebase,例如通过提供某个密码/密钥。
是否有标准或建议的方式来做到这一点?
仅当您在客户端代码之外进行身份验证时,安德鲁的答案才有效(否则您MY_SECRET
显然不应该使用您的)。由于很多人,比如我自己,使用 Firebase 来避免服务器代码,这里有一个替代答案。
在大多数 firebase 应用程序中,除了简单的登录“auth”对象(仅存储电子邮件和密码)之外,您可能还有一个“Users”对象。您可以为“Users”对象中的每个 $user 添加一个“isAdmin”或“isModerator”(或任何您想要的)。
然后您的规则将如下所示(假设您的 auth.id 与您的 $user 密钥匹配):
{
"rules": {
"someObject": {
".write": "root.child('Users').child(auth.uid).child('isAdmin').val() == true"
}
}
}
就在这里。您只需使用 Firebase Secret 而不是身份验证令牌进行身份验证。IE。
firebaseRef.auth(MY_SECRET);
您可以在 Forge 的 Authentication 部分找到 Secret。
根据文档,您需要使用firebaseRef.authWithCustomToken
.
例子;
firebaseRef.authWithCustomToken(FIREBASE_SECRET, function(error, authData) {
if(!error) {
// You are authenticated
}
});
firebaseRef.auth
现在已弃用,请firebaseRef.authWithCustomToken
改用。
authWithCustomToken 现在是 signInWithCustomToken(firebase 版本 3.x)
文档中的示例:
firebase.auth().signInWithCustomToken(token).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === 'auth/invalid-custom-token') {
alert('The token you provided is not valid.');
} else {
console.error(error);
}
});