2015-01-20 5 views
1

내 애플 리케이션에 권한을 부여하는 간단한 미들웨어가 있습니다. 그것은 GET 및 POST 일반 요청을 완벽하게 작동하지만 아약스를 통해 POST 요청을 할 때 그것은 페이지 401로 리디렉션되지 않고 대신 미들웨어를 무시하고 내 모델을 계속해서 데이터를 db에 삽입합니다.(Ajax & express js) Express js는 미들웨어를 인증합니다.

코드 :

function(req, res, next){ 
     if(!req.session.user){ 
      res.status(401); 
      res.redirect('/401'); 
     } 
     next(); } 

사람이 미들웨어는 Ajax 요청의 경우 작동하지만, 정상적인 요청이 제대로 작동하지 않는 이유를 나에게 설명 할 수 있습니까?

+2

'next()'를 치기 전에 실행이 멈추도록'else' 절 내에'next()'를 넣거나'res.redirect ('/ 401') 바로 다음에'return;'을 넣으려고 했습니까? '? – mscdex

+0

답변 해 주셔서 감사합니다. 반환을 두는; res.redirect(); 나를 위해 일합니다. :) – Noobish

답변

2

문제는 next()else 절에 있지 않기 때문에 심지어 당신이 리디렉션을 보내는 불구하고, 자바 스크립트 코드 실행을 계속합니다. 그러므로 res.redirect('/401') 바로 뒤에 return을 두거나 else 안에 next()을 넣으면 문제가 발생하지 않습니다.