36

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

是否有标准或建议的方式来做到这一点?

4

4 回答 4

51

仅当您在客户端代码之外进行身份验证时,安德鲁的答案才有效(否则您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"
    }
  }
}
于 2014-04-07T23:24:25.003 回答
17

就在这里。您只需使用 Firebase Secret 而不是身份验证令牌进行身份验证。IE。

firebaseRef.auth(MY_SECRET);

您可以在 Forge 的 Authentication 部分找到 Secret。

于 2013-07-12T05:52:15.240 回答
15

根据文档,您需要使用firebaseRef.authWithCustomToken.

例子;

firebaseRef.authWithCustomToken(FIREBASE_SECRET, function(error, authData) {
  if(!error) {
    // You are authenticated
  }
});

firebaseRef.auth现在已弃用,请firebaseRef.authWithCustomToken改用。

于 2014-12-11T00:23:45.190 回答
5

有关“最新”文档,请参阅此内容。

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);
    }
});
于 2017-03-29T07:43:52.613 回答