Node Express – redirect到login视图
我试图configuration我的快速应用程序redirect到基于某种逻辑的login页面。 我有以下几点:
app.use('/', function(req, res, next){ if(!req.session.accessToken){ //do something here } next(); });
我有一个login.html文件位于我的应用程序从服务目录的根目录,我只是不确定我需要调用res
对象,例如redirect
, send
另外,我知道上面实际上会导致无限循环。
这里有什么正确的方法?
你需要小心你的处理程序的顺序,你想要什么(如果你真的想自己做这件事,而不是使用类似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() });