我正在使用expressjs,我在我的应用程序中有以下内容:
app.get('/profile',index.profile);
app.get('/',index.home);
并在layout.jade
中...
if typeof(username)!=='undefined'
li: a(href='/logout') Log Out
else
li: a(href='/register') Register
...
我的路由代码如下:
exports.home = function(req,res){
if (typeof req.session.username == 'undefined')
res.render('login',{title:'PageTitle'});
else
res.redirect('/profile');
};
exports.profile = function(req,res){
var show_devices = function(username,dev){
res.render('home',{title:'Pagetutle', username: username,some other data..});
}
if (typeof req.session.username == 'undefined')
res.redirect('/');
...
这是我的退出
exports.logout = function(req,res){
req.session.destroy();
res.redirect('/');
};
我第一次启动服务器时,我会进入列表Register
,当我登录时我会Log Out
,但是当我退出时,我也会得到Log Out
。好像username
会以某种方式幸存下来。如何从jade名称空间中删除username
变量 - 我认为这是我的问题。
答案 0 :(得分:0)
我找到了一个解决方案,但对我来说感觉很难看。
我像这样修改exports.home
:
exports.home = function(req,res){
if (typeof req.session.username == 'undefined')
res.render('login',{title:'Smart Fridge',username:undefined});
else
res.redirect('/profile');
};
当jade检查时,它发现用户名的类型未定义。有更好的解决方案吗?我需要检查类型是否未定义,因为layout.jade
也是从其他页面呈现的,所以我觉得每次渲染页面时传递一些变量都很愚蠢,只是为了定义菜单的哪些元素应该是显示,哪些没有。