【问题标题】:Firebase Authentiction using Javascript使用 Javascript 的 Firebase 身份验证
【发布时间】:2017-08-24 20:36:36
【问题描述】:

我们正在使用 firebase 构建一个网络应用。我们使用 Firebase 托管来托管 CSS、图像和 javascript 等静态文件。我们还使用 firebase 函数来使 web 应用程序动态化。

const app = express();
...
app.use(express.static(__dirname + '/public'));

app.get('/', (req,res) => {
  res.render('index');
});

我在公共文件夹中有一个 signIn.js 并托管在 Firebase 托管上。当我尝试访问 signin.js 中的 "firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier) {}" 函数时,我收到一个错误,提示找不到“Firebase”。

我想使用 Firebase 在用户手机上发送 OTP。现在我很困惑我们是否应该在托管的 JS 文件中在客户端处理它,或者我们必须在 server.js 中的服务器端处理它。

另外,我如何从托管在 firebase 托管上的静态 js 文件调用托管在 firebase 函数上的 server.js 文件中的函数?

【问题讨论】:

标签: javascript node.js firebase firebase-authentication firebase-hosting


【解决方案1】:

firebase.auth().signInWithPhoneNumber 只是客户端。您还需要用它渲染一个不可见的 reCAPTCHA,这只能在客户端完成。如果您使用 Firebase Admin SDK,它允许您创建用户或使用电话号码更新现有用户,但它假定您通过自己的方式验证了该号码。

如果您需要通过 Firebase Functions 提供对某些 http 端点的身份验证访问,您可以将手机身份验证用户的 Firebase ID 令牌发送到该端点(您可以通过 currentUser.getIdToken() 在客户端上获取它)并通过以下方式进行验证Admin SDK verifyIdToken(idToken)

【讨论】:

  • 我正在使用 Firebase 电话身份验证。现在,我可以在客户端的用户手机上发送和验证 OTP。但我担心的是我必须在我的javascript文件中添加firebase API密钥、authDomain、databaseURL来配置firebase。现在用户可以很容易地访问这些值并且可以破坏安全性。 @bojeil
  • Web 中的 Firebase Auth 使用 reCAPTCHA 来验证页面的域是否与您的白名单域列表相匹配,并提供反滥用功能。此外,您的应用程序域会附加到 SMS 消息中。所有这些都将防止攻击者冒充您的应用。
猜你喜欢
  • 2016-09-26
  • 2020-03-16
  • 2021-12-04
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
相关资源
最近更新 更多