使用passport.js
,检查用户isAuthenticated
的推荐方法是什么?
我看到人们做这样的事情的例子:
app.get('/', isAuthenticated, function(req,res){});
这是如何工作的,app.get
只接受两个参数?
当我使用express.Router()
时呢?
router.get
的正确语法是什么?
更一般地说,在每条路线上检查isAuthenticated
似乎效率低下。有没有更好的方法来检查Express应用程序中的身份验证?
感谢。
答案 0 :(得分:1)
app.get
根据需要接受尽可能多的middlewares。根据{{3}}:
router.METHOD(路径,[回调,...]回调)
...
你可以提供多个回调,并且所有回调都是平等的,并且表现得像中间件一样,除了这些回调可能 调用next(' route')绕过剩余的路由回调。您 可以使用此机制在路线上执行前置条件然后通过 当没有理由继续时,控制到后续路线 路线匹配。
这是您的身份验证中间件功能的样子:
function isAuthenticated(req, res, next) {
if(/*check authentification*/) {
return next();
}
res.send('auth failed');
}
另一方面,passport.js
documentation可以用作Express中间件。
app.post('/login',
passport.authenticate('local'),
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
验证请求就像调用passport.authenticate()并指定要使用的策略一样简单。必须先配置策略,然后才能在路径中使用它们。有关详细信息,请继续阅读provides a built-in function一章。