Firebase以管理员身份进行身份验证

时间:2013-07-12 03:37:17

标签: firebase firebase-security

我是否有办法通过Firebase作为firebase的管理员进行身份验证,以获得对它的完全读/写访问权限(已经有安全规则保护部分内容),或者我是否必须编写一个安全规则以某种方式允许我访问完整的firebase,例如通过提供某个密码/密钥。

是否有标准或建议的方法?

4 个答案:

答案 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);
    }
});