访问node.js中重定向文件中的会话变量

时间:2013-04-15 07:24:22

标签: node.js express

我正在建立一个糟糕的登录系统作为新手。到目前为止我已经这样做了:

app.post("/verifyLogin",function(request,response){
var usr=request.body.username;
var pass=request.body.password;

userModel.find({$and:[{username:usr},{password:pass}]},function(err,user){

if(user.length==0)
{
    response.redirect("/?msg=failed");
}
else
{
    request.session.user=user;
    response.redirect("/dashboard");

}

 });

    });

这很好但是在成功登录后我想在仪表板中获取用户详细信息。我很无能为力。请详细说明。

修改

我在路线中为仪表板设置了以下设置:

app.get("/dashboard",function(request,response){
response.sendfile('/lms/site/dashboard.html');
});

1 个答案:

答案 0 :(得分:0)

如果您的意思是想要将用户的详细信息传递给模板:

app.get('/dashboard', function(req, res) {
  res.render('dashboard', {
    user : req.session.user
  });
});

这假设了一些事情:

  • 你有一个有效的模板设置;
  • 您有一个名为dashboard的模板(扩展名与您的模板设置相匹配);
  • 您将提供某种设置以确保用户在打开/dashboard之前已登录。

编辑,因为您不想使用模板,您可以使用AJAX将用户详细信息从服务器获取到客户端:

// server side
app.get('/userdata', function(req, res) {
  // check if a user is logged in
  ...
  // return the user details as JSON
  res.send(req.session.user);
});

// client side (in 'dashboard.html', this assumes is will load jQuery)
$.getJSON('/userdata', function(user) {
  // process user data, insert it into the DOM somewhere...
});

编辑2:检查用户是否已登录,您可以创建一个中间件,检查是否存在req.session.user并重定向到登录页面(如果未定义): / p>

var isLoggedIn = function(req, res, next) {
  if (req.session && req.session.user)
    next(); // user logged in, so pass
  else
    res.redirect('/'); // not logged in, redirect to login page
};

您可以将isLoggedIn中间件用于需要用户登录的所有路由:

app.get('/userdata', isLoggedIn, function(req, res) {
  res.send(req.session.user);
});