Nodejs express res.redirect loop



使用Nodejs和Express服务器,我试图阻止任何人在不登录的情况下访问我的第二组路由,虽然这很有效,但如果会话没有检测到会话令牌中的电子邮件,我会陷入重定向循环。我相信它试图检查/users端点的req.session.email,也会导致重定向循环,但由于在我认为/users终结点将避免检查之后使用了会话检查中间件。

我如何组织我的代码,使书籍端点只有在req.session.email得到满足时才能到达,并且当有人试图在没有登录的情况下访问它时,不会陷入重定向循环?

app.use('/users', users)
app.use((req, res, next) => {
if(!req.session.email){
res.redirect('/login')
}
else{
next();
}
})
app.use('/books', books);

app.use语句的顺序在这种情况下并不重要;如果只检查/books端点,则可以将中间件添加到路由级别。

const yourMiddlewareFunction = (req, res, next) => {
if(!req.session.email){
res.redirect('/login')
}
else{
next();
}
}
app.use('/books', yourMiddlewareFunction, books);

如果你只想保护/books端点,你可以这样做:

function requireLogin(req, res, next) {
if(!req.session.email){
res.redirect('/login')
}
else{
next();
}
}

app.use('/books', requireLogin, books);

相关内容

  • 没有找到相关文章

最新更新