express 通过 req.session.user 设置权限管理
发布于 8 年前 作者 studynodecn 3454 次浏览 来自 问答

是按照“使用 Express + MongoDB 搭建多人博客 ”来写的,为了增加admin管理员功能,我设想的是比对req.session.user是否=‘管理员账号’。用checkManager函数实现

router.get('/post', checkManager);
router.get('/post', function (req, res) {
  res.render('post', {
    user: req.session.user,
    success: req.flash('success').toString(),
    error: req.flash('error').toString()
  });
});
router.post('/post', checkManager);
router.post('/post', function (req, res) {
  var currentUser = req.session.user,
      post = new Post(currentUser.name, req.body.title, req.body.post);
  post.save(function (err) {
    if (err) {
      req.flash('error', err);
      return res.redirect('/');
    }
    req.flash('success', '发布成功!');
    res.redirect('/');//发表成功跳转到主页
  });
});

//admin
function checkManager(req, res, next) {
  if (req.session.user !== 'jj') {
  //jj是管理员账号
    //req.flash('error', '没有权限!');
    return res.redirect('/test');
  }
  next();
}
但是跳转到http://localhost:3000/test的时候,提示“error not found”
请问是哪里出了错呢?
我在想是不是因为req.session.user返回的值是[object object]的形式?
5 回复

看你代码没错啊,你直接访问“http://localhost:3000/test” 是不是404啊

为什么不使用passportjs呢?

原来是我忘了给test get/post方法了。。。,req.sesssion.user后面应该添加.name,刚刚弄好,,,谢谢各位的回复!

@stuartZhang 啊,不知道有这个库,我去看看源代码,谢谢回复!

@hapiman 是我的锅,代码里面忘了给它添加get方法了。。。之前以为添加好了,后来才发现忘了添加。谢谢回复!

回到顶部