检查用户是否从Node.js(Cloud Functions)登录到Firebase Auth

时间:2019-05-07 13:00:34

标签: node.js typescript firebase firebase-authentication google-cloud-functions

我正在尝试在Node.js上创建Express动态网页。我想在路径/的服务器(Firebase Cloud Functions)上执行以下逻辑:

  • 如果客户端已登录(Firebase身份验证),请呈现主页my_home_page.html
  • 如果客户端未登录,请呈现登录页面my_login_page.html

所以我需要实现isClientLoggedIn函数:

import * as functions from 'firebase-functions';
import * as express from 'express';

const app = express();

export const redirects = functions.https.onRequest(app);

app.set('views', './res');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

function isClientLoggedIn(request: Request): bool {
    return // ???
}
app.get('/', (req, res) => {
    if (isClientLoggedIn(req)) {
        res.render('my_home_page.html');
    } else {
        res.render('my_login_page.html');
    }
});

但是,我已经检查了Firebase Auth文档,但我不知道如何实现此功能。是否可以通过HTTP请求检查客户端的登录状态,或者还有其他方法可以呈现正确的内容?

1 个答案:

答案 0 :(得分:0)

HTTPS触发的Cloud Functions中没有内置的方法来知道请求是否来自已登录的用户。如果要确定该请求,则需要传递用户的ID令牌以及请求,并在Cloud Function中解码并验证该令牌。有关此示例的简单示例,请参见function-samples存储库中的Authenticated JSON API