0

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

  • 显示未登录用户的登录按钮
  • 显示欢迎 {用户名} | 否则注销

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

4

1 回答 1

0

1)创建一个动态助手“用户”,例如:

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!
于 2012-06-25T21:07:11.583 回答