모든 페이지를로드하기 전에 authenticateUser() 미들웨어를 사용하려고합니다. (app.get ('/', authenticateUser, function() ...)과 같이 각 호출에 포함하는 대신 app.use (authenticateUser)를 app.use (app.router)를 호출하기 전에 설정하려고했습니다.).Node.js - 미들웨어의 res.redirect 관련 문제
그러나 이것은 작동하지 않았습니다.
if (req.session.loginFailed) {
next()
else {
if (req.session.user_id) {
...
if (userAuthenticated) {
next();
} else {
req.session.loginFailed = true;
console.log('setting loginFailed to true');
res.redirect('/login');
}
}
}
그리고 app.get ('/ 로그인')에 나는 거짓으로 req.session.loginFailed를 설정;에서 AuthenticateUser은 기본적으로
이 방법이 효과적 일 수 있지만 내 실제 페이지 중 하나에 대해서만 app.get() 또는 app.post() 등으로 호출하고 싶습니다. 나는 많은 다른 요청에 대해 많은 시간을 필요로한다고 생각한다. (하나의 페이지를 로딩 할 때 'loginFailed를 true로 설정하면'이 여러 번 호출되기 때문에)
더 좋은 방법이 있습니까? 아니면 단순히 내 사이트의 모든 페이지보다 먼저 호출해야합니까?
충분히 재미 있습니다. 사실은 노다 패드 튜토리얼을 실제로 사용했기 때문입니다. 문제는 내 전체 사이트에 로그인해야한다는 것입니다. 따라서 모든 경로에 수동으로 포함시키지 않아도되는 방식으로 해킹했습니다. 그러나 적절한 방법이 있다면 포함시켜야합니다. –
@alessioalex에 동의합니다. 그래도 접근법을 고집한다면, 당신의'app.use (authenticateUser)'가 세션 미들웨어 이후에 있는지 확인하십시오. – danmactough