我有一个在Firebase上编写的应用程序。安全规则和客户端代码还不足以使我的应用正常工作。我需要连接服务器来执行一些任务:
_更新日期(20160611):如果您在https://firebase.google.com上创建了项目,则从服务器访问数据库的步骤有所不同。
您可以通过两种方式执行此操作:生成服务器身份验证令牌或使用Firebase机密。
生成服务器令牌
您可以使用为“自定义登录”创建的相同令牌生成器库来生成可从服务器使用的令牌。然后,您可以根据安全规则提供对该服务器的特殊访问权限。
步骤如下:
生成带有预选uid的令牌。如果您正在编写一个node.js服务器,则代码可能看起来像这样:
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator(“
var token = tokenGenerator.createToken(
{uid: “my-awesome-server”},
{ expires:
使用令牌来验证您的客户端。这里是更多的node.js代码:
var ref = new Firebase("https://<your-firebase>.firebaseio.com/");
ref.authWithCustomToken(token, function(error, authData) {
…
});
如果没有用于服务器语言的客户端(例如PHP),则将REST请求的令牌用作auth
参数。
更新您的安全规则,以授予由uid标识的服务器特殊权限,例如该简单规则,该规则允许对整个Firebase进行读取访问
{
"rules": {
".write": false,
".read": "auth.uid === 'my-awesome-server'"
}
}
访问所有数据,做一些很棒的事情。
优点
火力基地的秘密
如果您是那种乐于助人为乐的开发人员,并且喜欢sudo
打字,那么您也可以直接使用Firebase机密进行身份验证。
但认真的说,不要这样做。这很危险。
不这样做的原因
sudo
,这是非常危险的。我要找的是一些别人如何解决这个问题的建议/经验。如果需要,我很乐意提供更多的信息。 为了让您更容易地给出建议,这里有两个选择的简短描述:1)使用JWT处理身份验证和授权?为什么?2)保持JWT的轻量级,并在每个微服务中向授权服务器发出请求?为什么?
问题内容: 您应该在服务器端进行验证,还是可以在客户端进行验证? @TheTXI 我很高兴您感到惊讶,我只是不想遗漏任何可能改变某人答案的虚假信息。 似乎很多人都在关注我要追求的目标,但是应该将Ajax的一部分保留在我的问题中,因为这是最重要的部分。 但是,我阅读这些帖子后知道,一个坏人可以轻松地加载萤火虫并将我的按钮更改为“提交”按钮并进行发布。或其他方式。 问题答案: 浏览器/客户端验证很方便
假设有两个微服务:订单和库存。order service中有一个API,它接受< code>ProductId 、< code>Qty等并下订单。 理想情况下,只有在库存服务中存在库存时才允许下订单。人们建议使用Saga模式或任何其他分布式事务。这很好,最终将利用一致性。 但是如果有人想滥用这个系统。他可以使用无效或缺货的产品(< code>ProductId)推送订单。系统将接受所有这些订单,并
我正在进行一个项目,我们将在微服务架构中使用不同的服务,我们还希望使用一些Firebase服务。我正在开发一个身份验证服务器,它将铸造定制的JWT,用于Firebase和其他应用编程接口项目。 我们希望使用Firebase Auth SDK轻松与FB、谷歌、Twitter等集成,但我们需要用更多数据丰富用户的令牌。因此,我的思维过程是创建一个节点。使用Firebase Admin SDK执行此操作
问题内容: 我刚刚用复选框设置了新的google recaptcha,它在前端工作正常,但是我不知道如何在服务器端使用PHP处理它。我尝试使用下面的旧代码,但是即使验证码无效,也会发送表格。 问题答案: 这是解决方案 index.html verify.php http://codeforgeek.com/2014/12/google-recaptcha- tutorial/