Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何保护除一条以外的所有路线?_Node.js_Passport.js - Fatal编程技术网

Node.js 如何保护除一条以外的所有路线?

Node.js 如何保护除一条以外的所有路线?,node.js,passport.js,Node.js,Passport.js,我正在使用Jared Hanson的connect-Sure登录方法,文档表明它通过在登录路径上安装authenticate()中间件与passport集成 我想知道这是否意味着只有那条路线受到保护?还是所有路线都是 此外,我目前在我的应用程序中有重试计数/锁定逻辑,但这个模块似乎过于简单,因为它只在失败时重定向。可以使用更复杂的逻辑吗?您需要自己保护路由。因为路线的定义顺序很重要,所以你应该做例如 // Obviously cannot be protected app.get('/login

我正在使用Jared Hanson的connect-Sure登录方法,文档表明它通过在登录路径上安装
authenticate()
中间件与passport集成

我想知道这是否意味着只有那条路线受到保护?还是所有路线都是


此外,我目前在我的应用程序中有重试计数/锁定逻辑,但这个模块似乎过于简单,因为它只在失败时重定向。可以使用更复杂的逻辑吗?

您需要自己保护路由。因为路线的定义顺序很重要,所以你应该做例如

// Obviously cannot be protected
app.get('/login', function(req, res) {
  res.send(...);
});

// Authentication
app.post('/login', passport.authenticate('strategy', {
  successReturnToOrRedirect: '/',
  failureRedirect: '/login'
}));

// A random unprotected route
app.get('/unprotected', function(req, res) {});

// From now on all routes require authentication
app.all('/*', ensureLoggedIn('/login'));

// Root of domain for authenticated users only
app.get('/', function(req, res) {
  res.send(...);
});
connect-sure-login
模块只定义了一个简单的中间件,您可以轻松定义自己的中间件,它可以满足您的需要。我相信许多甚至大多数人使用更简单的中间件来检测经过身份验证的用户,如下所示:

var isAuthenticated = function(req, res, next) {
  if (req.isAuthenticated()) {
    return next();
  } else {
    return res.redirect('/login');
  }
};

如果您提供一些代码,或者您使用过的模块的链接,会更好。