0

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

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');
});
4

1 回答 1

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如果未定义,它将检查是否存在并重定向到登录页面:

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);
});
于 2013-04-15T07:31:48.077 回答