网上大多都是添加一个check函数,比如在未登录之前想访问 /posts/new
页面,当然这样是不被允许的,因此需要检查是否登录,所以添加一个函数用于验证:
function checkLogin(req, res, next) {
if (!req.session.user) {
req.flash('error', null);
req.flash('error', '请先登录');
res.redirect('/login');
}
next();
}
于是这样使用:
app.get('/posts/new' , checkLogin); # -> 1
app.get('/posts/new' , function(req, res){ #-> 2
var user = req.session.user;
res.render('posts/new', {user: user); #-> 3
});
上面那样使用的话能实现想要的效果,但是因为异步执行 ,1 处执行时,2 处同样要执行,又因为没有登录 req.session.user 是没有值的,所以 3 处传值时后端会出现这个错误:
Cannot read property 'user of undefined
请问有没有好的解决方式阿?