express 通过 req.session.user 设置权限管理
是按照“使用 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方法了。。。之前以为添加好了,后来才发现忘了添加。谢谢回复!