【发布时间】:2015-05-28 06:06:42
【问题描述】:
我有一个在 Firebase 上编写的应用。安全规则和客户端代码不足以使我的应用程序正常工作。我需要连接服务器来完成一些任务:
- 清理难以清理的非规范化数据 onDisconnect handlers
- 为我的数据构建超出我能力范围的附加索引 和 queries
【问题讨论】:
我有一个在 Firebase 上编写的应用。安全规则和客户端代码不足以使我的应用程序正常工作。我需要连接服务器来完成一些任务:
【问题讨论】:
更新 (20160611):如果您在 https://firebase.google.com 上创建项目,则从服务器访问数据库的步骤会有所不同。看到这个答案:Is it still possible to do server side verification of tokens in Firebase 3?
您可以通过两种方式执行此操作:生成服务器身份验证令牌,或使用 Firebase 密钥。
生成服务器令牌 您可以使用为自定义登录创建的相同token generator libraries 来生成可以从您的服务器使用的令牌。然后,您可以根据您的安全规则提供对该服务器的特殊访问权限。
步骤如下:
使用预选的 uid 生成令牌。如果您正在编写 node.js 服务器,代码可能如下所示:
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("<your-firebase-secret>");
var token = tokenGenerator.createToken(
{uid: "my-awesome-server"},
{ expires: <far_into_the_future_seconds> });
使用令牌来验证您的客户端。这里有更多 node.js 代码:
var ref = new Firebase("https://<your-firebase>.firebaseio.com/");
ref.authWithCustomToken(token, function(error, authData) {
...
});
如果您的服务器语言没有客户端,例如PHP,将 REST 请求的令牌用作 auth parameter。
更新您的安全规则以授予您的服务器由 uid 标识的特殊权限,例如允许对整个 Firebase 进行读取访问的简单规则
{
"rules": {
".write": false,
".read": "auth.uid === 'my-awesome-server'"
}
}
访问所有数据,做一些很棒的事情。
优势
Firebase 机密
如果您是那种喜欢生活在边缘的开发者,并且会立即输入sudo,您还可以直接使用您的 Firebase 密码进行身份验证。
但是说真的,不要这样做。很危险。
不这样做的理由
sudo一样,非常危险。【讨论】: