Node - Express - Passport 如何使用“/”登录和登录主页?

How with Node - Express - Passport do I use "/" for login and logged-in homepage?

我想申请 Node.js、Express.js 和 Passport.js,如果您没有登录,主页上会显示一个登录表单 (现在,也许以后会出现一个提供多种身份验证策略的页面)。但是如果您已登录,它会加载主页。

Passport.js 文档似乎非常清楚如何将登录和主页 URL 分开,因此只需复制代码即可在“/login”处创建一个登录表单如果发生登录失败,它将重定向到“/login”处的自身并显示一条闪现消息,如果您的凭据已通过验证,它将重定向到“/”。但是,我看不到如何从一个 URL 提供集成服务,其中站点主页呈现 "Please authenticate yourself by one of these strategies" 页面(或者每个策略可能链接到一个登录页面,但我对此不感兴趣现在提问)如果你没有登录,如果用户登录则呈现实际登录的主页内容。

我应该怎么做?假设我现在正在使用 passport-local 的用户名-密码策略,同时我正在尝试确定与 Facebook 建立联系的一些细节。

您可以在您的主要路线上检查 req.user 并相应地重定向。

app.get('/', function mainRoute(req, res, next) {
    if (!req.user) res.redirect('/login');
    else res.render('home');
});