Passport.js:如何保护所有路由?
我按照本地护照:.js
当我将用户发送到/login
时,他们会通过身份验证,但在该文档中我找不到如何授权我的用户。
我试过这个,但这给了我一个bad request
:
router.get('/somepage', passport.authenticate('local'), function(req, res, next) {
});
我正在寻找保护我所有页面的方法。我正在使用Express 4.16并使用不同的路由文件来分割我的路由。
他自己
回答如下:你可以使用middleware
和一个小技巧来切换策略
例:
const allowUrl = ['public', 'nonprivate','home'];
const authenticationMiddleware = (whiteList =[]) => (req, res, next) => {
if(whiteList.find(req.baseUrl)) {
next();
}
if (req.isAuthenticated()) {
return next()
}
res.redirect('/');
}
app = express();
app.use(passort.initialize());
app.use(authenticationMiddleware(allowUrl));
app.use(apiRouter);
app.listen(3000, ()=> console.log('hello internet');