在Jade视图中检查会话variables
我使用NodeJS,ExpressJS,PassportJS和玉。
我有一个标题菜单,将显示login或注销。 如果用户尚未login,则显示login;如果用户已login,则login。
菜单在独立的jade文件中: menu.jade
并包含在其余的jade文件中。
include menu
在menu.jade中如何检查用户是否已经login? 我可以用玉来检查会话variables吗? 像下面的menu.jade
?
if ( req.session.name != null) a(href='/logout') Logout else a(href='/login') Login
谢谢
您需要将会话暴露给模板。 我这样做,是我把我的用户variables放入本地:
注意:req.user是由passportJS设置的,你可以从这里看到他们的例子(在底部)
注2:更多关于当地人的信息
app.get('*', function(req, res, next) { // put user into res.locals for easy access from templates res.locals.user = req.user || null; next(); });
然后在模板中,你可以这样做:
- if(_user) { div.menuForLoggedInUser - } else { div.menuForLoggedOutUser - }
如果你不想将整个用户对象暴露给模板,可以随意把“loggedIn”放到当地人身上,然后检查一下……这样的话:
app.get('*', function(req, res, next) { // just use boolean for loggedIn res.locals.loggedIn = (req.user) ? true : false; next(); });
编辑:感谢robertklep指出res.locals与app.locals
我将带来variables,结果检查login。
// routes/some.js exports.index = function (req, res) { res.render('somepage', { isAlreadyLoggedin: checkSessionSomeway() }) } // menu.jade if ( isAlreadyLoggedin != null) a(href='/logout') Logout else a(href='/login') Login