请问有什么更好地方式实现页面访问控制?
发布于 6天前 作者 jsanswer1 136 次浏览 来自 问答

网上大多都是添加一个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

请问有没有好的解决方式阿?

5 回复

app.get(‘/posts/new’ , checkLogin, function(req, res){
var user = req.session.user; res.render('posts/new’, {user: user); });

登录比较好控制,在控制后台各种操作权限的时候就悲剧了,兄弟们 ,给点思路哈。

@i5ting 额 ,rbac 貌似php 实现很容易

@jerrywu55 哈哈,设计思想,和语言无甚关系,不过是java和php里现成的东西多而已

回到顶部