Passport.js为node.js和Express提供了强大的身份验证,包括中间件解决方案:
ensureAuthenticated = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
return res.redirect("/login");
};
如何在express-resource模块中使用此中间件?不幸的是
app.resource('users', ensureAuthenticated, require('./resources/users'));
不管用。
6条答案
按热度按时间x7rlezfr1#
我知道这有点太晚了,原来的帖子得到了回答,然而,我正在寻找同样的答案,并找到了一个我认为其他人可能想知道的解决方案。
只要确保从passport调用Authenticated即可。
它在这里找到:https://gist.github.com/1941301
uqzxnwby2#
解决办法。确保对所有请求进行身份验证,并忽略转到/auth和/auth/callback的请求。
bvk5enib3#
您将需要使用一些魔法来让每个资源使用身份验证中间件。下面的要点解释如何通过使用菜单结构来实现这一点。
https://gist.github.com/3610934
基本上,您需要以下逻辑:
然后,您可以在菜单结构中指定哪些资源受到保护,以及它们是否需要任何类型的特定权限,甚至到HTTP方法级别。
希望这对某人有帮助!
vmpqdwk34#
我不确定express-resource是否有将中间件插入到特定资源中的选项,但您可以始终插入检查您是否在中间件内的资源中。
laik7k3q5#
这个方法的作用是:
app.get('/',ensureAuthenticated,admin.index);
只要你的策略正确。我用的是本地策略。查看指南:
http://passportjs.org/guide/username-password.html
evrscar26#
我也在查这个主题,找到了https://npmjs.org/package/express-resource-middleware。不过,还没测试过。