Node Express – redirect到login视图

我试图configuration我的快速应用程序redirect到基于某种逻辑的login页面。 我有以下几点:

app.use('/', function(req, res, next){ if(!req.session.accessToken){ //do something here } next(); }); 

我有一个login.html文件位于我的应用程序从服务目录的根目录,我只是不确定我需要调用res对象,例如redirectsend

另外,我知道上面实际上会导致无限循环。

这里有什么正确的方法?

你需要小心你的处理程序的顺序,你想要什么(如果你真的想自己做这件事,而不是使用类似Passport的东西)就像(有点骨架)。

 app.use('/login', function(req, res) { // Allows access to login page res.send('displaying login page'); // before access token check }); app.use(function(req, res, next) { // Catches access to all other pages if(!req.session.accessToken) { // requiring a valid access token res.redirect('/login'); } else { next(); } }); // the rest of your routes go here, they should not be called unless authenticated 

最显而易见的答案是简单地调用res.redirect('/login.html') ,但是这将返回一个301 (永久移动)代码到浏览器。 更正确的解决scheme可能是返回一个401 (未经授权),并将login.html文件呈现给响应。

请参阅是否有可能发送401未经授权和redirect(与位置)?

所以一个解决scheme可能看起来像这样:

 app.use('/', function(req, res, next){ if(!req.session.accessToken) res.status(401).sendFile(path.join(__dirname+'/login.html')); else next() });