0

我正在使用 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不知何故会在那里幸存下来。如何从玉命名空间中删除username变量 - 我认为这是我的问题。

4

1 回答 1

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也是从其他页面呈现的,所以我发现每次呈现页面时传递一些变量只是为了定义菜单的哪些元素应该显示而哪些不应该显示是愚蠢的。

于 2013-04-07T19:15:20.083 回答