ExpressJS显示登录与未登录用户的不同视图部分

时间:2012-06-23 10:17:25

标签: express

如何根据用户是否登录向用户显示不同的内容。一个非常简单的用例:

  • 显示未登录用户的登录按钮
  • 显示欢迎{username} |否则退出

我相信我应该检查会话但是我怎么能这样做而不会每次都将会话(或只是用户名/ id)传递给视图

1 个答案:

答案 0 :(得分:0)

1)创建一个动态帮助者“user”,例如:

app.dynamicHelpers({
  user: function(req, res){
    var roles, name;

    if (req.session && req.session.auth == true) {
      roles = ['member'];
      name = (req.session.user) ? req.session.user.name : 'Registered member';
      id = (req.session.user) ? req.session.user.id : null;
    }
    else {
      roles = ['guest'];
      name = 'Guest';
      id = null;
    }

    return {
      name: name, 
      id: id,
      roles: roles,
      isGuest: roles.indexOf('guest') !== -1,
      isMember: roles.indexOf('member') !== -1,
      isAdmin: roles.indexOf('admin') !== -1
    }
  }
});

2)在视图中(如果使用Jade)使用以下条件符号:

if user.isGuest
  h2 Please register!
if user.isMember
  h2 Hello, member!
相关问题