Javascript 仅允许passportjs身份验证用户访问受保护页面

Javascript 仅允许passportjs身份验证用户访问受保护页面,javascript,node.js,express,passport.js,Javascript,Node.js,Express,Passport.js,将此代码放置在路由中是否足以保护页面免受未经身份验证的用户的攻击 if (!req.user) return res.send(401, "Not allowed in"); 只要你不在某处泄露路线就足够了。只要确保你的路线顺序正确就行了 //checks to be sure users are authenticated app.all("*", function(req, res, next){ if (!req.user) res.send(403); else

将此代码放置在路由中是否足以保护页面免受未经身份验证的用户的攻击

if (!req.user) return res.send(401, "Not allowed in");

只要你不在某处泄露路线就足够了。只要确保你的路线顺序正确就行了

//checks to be sure users are authenticated
app.all("*", function(req, res, next){
  if (!req.user) 
    res.send(403);
  else
    next();
});
//additional routes will require authentication due to the order of middleware
app.get("/admin", .... 

但是,如果将管理路由移到全局路由之上,则管理路由将不再受保护。例如,您可能希望有目的地将登录页面放在前面,这样就不需要身份验证

您可以使用
req.isAuthenticated()
检查请求是否经过身份验证

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

app.get('/server', ensureAuthenticated, routes.server.get);
app.get('/login', routes.login.get);
还是像这样

app.all('*', function(req,res,next){
  if (req.path === '/' || req.path === '/login')
  next();
  else
  ensureAuthenticated(req,res,next);  
});

对user568109答案的更正,对于express 4,代码必须如下所示:

app.all('*', function(req,res,next) {
  if (req.path === '/' || req.path === '/login')
    next();
  else
    ensureAuthenticated(req,res,next);  
});

上帝啊,谢天谢地,
isAuthenticated()
完全没有记录。这就像图书馆的整个中心。总有一天,我会找到这个叫杰瑞德·汉森的家伙,派一架上面有一只大橡皮手的无人机到他家里,然后因为他用护照在世界上到处乱跑而不断地揍他一顿。谢谢