【发布时间】:2018-01-16 17:32:23
【问题描述】:
如果用户未通过身份验证,我会尝试限制所有页面。
奇怪的是,当我调用登录页面时,我的中间件被调用了两次。
以下是我的代码
app.use((req, res, next) => {
if (req.session.user) {
res.session.user = req.session.user;
}
if (req.isAuthenticated() || req.path === '/' || req.path === '/login'){
console.log('inside next');
next()
}else{
console.log('inside redirect');
res.redirect('/')
}
});
app.get('/', (req, res) => {
console.log('inside /')
res.render('./login', {
css: ['login.css'],
js: ['login.js']
})
});
当我转到我的根页面localhost:8000/ 时,它会在控制台中打印出以下内容
inside next
inside /
inside redirect
inside next
inside /
正如你在调用get('/') 之后看到的,再次调用中间件来重定向页面。为什么是这样?如果我删除中间件,/ 只会被调用一次。
【问题讨论】:
-
您如何调用该服务。可能与客户端代码有关。
-
@SamuelToh 你是什么意思?你想看代码的哪一部分
-
@SamuelToh 正如我所说,/ 仅在我添加中间件时才会呈现两次,所以我猜这与此有关。
-
调用
/和/login的客户端javascript。也许您的login页面在页面加载时正在调用/login端点?