网上大多都是添加一个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
请问有没有好的解决方式阿?
app.get(’/posts/new’ , checkLogin, function(req, res){
var user = req.session.user; res.render(‘posts/new’, {user: user); });
登录比较好控制,在控制后台各种操作权限的时候就悲剧了,兄弟们 ,给点思路哈。
@jerrywu55 rbac or acl
@i5ting 额 ,rbac 貌似php 实现很容易
@jerrywu55 哈哈,设计思想,和语言无甚关系,不过是java和php里现成的东西多而已
试试 return res.redirect(’/login’);
function checkLogin(req, res, next) {
if (!req.session.user) {
req.flash('error', null);
req.flash('error', '请先登录');
res.redirect('/login');
}
next();
}
没登录的情况下,就不要call next() 了
我移植过php的一个验证类
@leapon 支持
最近在用sails,感觉它的权限控制非常好,它提供了一个policy 通过中间件的方式来添加各种权限,可以api一对一权限,一对多,多对一,多对多,棒棒哒,题主可以去试试~