我正在尝试使用express在node.js服务器上设置通行证本地身份验证。它似乎应该是非常简单的。但我陷入困境。快速身份验证重定向导致无限循环
这两个片段做工精细在一起:
app.get('/', ensureAuthenticated, function(req, res){
res.redirect('/index.html', { user: req.user });
});
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login.html', failureFlash: true, successFlash: "Success!" }),
function(req, res) {
res.redirect('/');
});
的问题是没有什么让我打字“www.myurl.com/index.html”到地址栏和右侧拖放到我的网页。
如果我使用一个像这样的任何代码:
app.get('/index.html', ensureAuthenticated, function(req, res){
res.redirect('/index.html', { user: req.user });
});
好像我陷入一个循环......这将是很好,如果它可以检查我的身份验证和送我对我的方式,而不永远检查每个重定向。避免这种情况的方法是什么?
我注意到文档似乎利用.render而不是重定向。但是这个SEEMS要求我使用.ejs,我宁愿不这样做。这是必须的吗?
++仅供参考++
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login.html')
}
我已经结束了做app.get('/ index.html',ensureAuthenticated);到目前为止它工作正常。是否有理由使用“使用”而不是“获得”? – Jeremythuff
我倾向于将'app.use'用于'真正'中间件,就像我的示例代码中一样。此外,'app.use'将匹配GET以外的请求方法,但在这种情况下,这不是真正的问题。因此,除了语义之外,在这种情况下,没有理由选择另一个:)(编辑:使用'app.get'也可能存在潜在的副作用,因为它由路由器中间件处理,但我不认为他们也会在这里申请) – robertklep