我是否有办法通过Firebase作为firebase的管理员进行身份验证,以获得对它的完全读/写访问权限(已经有安全规则保护部分内容),或者我是否必须编写一个安全规则以某种方式允许我访问完整的firebase,例如通过提供某个密码/密钥。
是否有标准或建议的方法?
答案 0 :(得分:49)
安德鲁的回答只有在您在客户端代码之外进行身份验证时才有效(否则您不应该使用MY_SECRET
)。由于很多人(比如我自己)使用Firebase来避免使用服务器代码,因此这是一个替代答案。
在大多数firebase应用程序中,除了简单的登录“auth”对象(仅存储电子邮件和密码)之外,您可能还有一个“用户”对象。您可以在“Users”对象中为每个$ user添加“isAdmin”或“isModerator”(或任何您想要的内容)。
然后你的规则看起来像这样(假设你的auth.id与你的$ user密钥匹配):
{
"rules": {
"someObject": {
".write": "root.child('Users').child(auth.uid).child('isAdmin').val() == true"
}
}
}
答案 1 :(得分:17)
是的。您只需使用Firebase机密而不是身份验证令牌进行身份验证。即
firebaseRef.auth(MY_SECRET);
您可以在Forge的身份验证部分找到秘密。
答案 2 :(得分:15)
As per the documentation,您需要使用firebaseRef.authWithCustomToken
。
实施例
firebaseRef.authWithCustomToken(FIREBASE_SECRET, function(error, authData) {
if(!error) {
// You are authenticated
}
});
firebaseRef.auth
现已弃用,请改用firebaseRef.authWithCustomToken
。
答案 3 :(得分:3)
See this for the 'latest' documentation.
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);
}
});