一尘不染

如何知道用户是否使用passport.js登录?

node.js

我已经阅读passport.js了两天的信息和样本,但不确定此后是否完成了所有身份验证过程。

我怎么知道我是否已登录,例如,我将有一个带有登录或注销按钮的导航栏,下面是否有一些变量,如代码?

if (login)
   <button>logout</button>
else 
   <button>login</button>

阅读 158

收藏
2020-07-07

共1个答案

一尘不染

如果用户已登录,passport.js则将为中的每个请求创建一个user对象,您可以检查任何中间件是否存在:req``express.js

if (req.user) {
    // logged in
} else {
    // not logged in
}

您可以express.js为此创建简单的中间件,该中间件将检查用户是否已登录,如果没有,则将重定向到/login页面:

function loggedIn(req, res, next) {
    if (req.user) {
        next();
    } else {
        res.redirect('/login');
    }
}

并使用它:

app.get('/orders', loggedIn, function(req, res, next) {
    // req.user - will exist
    // load user orders and render them
});
2020-07-07