如何知道用户是否使用passport.jslogin?

我一直在阅读passport.js信息和样本两天,但我不确定之后,我做了所有的身份validation过程。

我怎么知道我是否login,例如,我将有一个导航栏与login或注销button,有一些像下面的代码的variables?

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

如果用户login, passport.js将在请求中为express.js每个请求创builduser对象,您可以在任何中间件中检查是否存在:

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

您可以为此创build简单的express.js中间件,这将检查用户是否已login,如果不是,将redirect到/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 }); 

如果你想在你的模板中使用它,因为你的代码示例似乎表明你可以创build一些中间件,例如:

 app.use(function (req, res, next) { res.locals.login = req.isAuthenticated(); next(); }); 

设置护照后,将代码放置在某处。

然后在你的模板中使用它(swig示例)

 {% if login %} <button>logout</button> {% else %} <button>login</button> {% endif %}