我正在建立一个糟糕的登录系统作为新手。到目前为止我已经这样做了:
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');
});
答案 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);
});