개발 Q&A

제목 리다이렉션 이후 ajax 사용시 리턴값으로 해당 페이지를 넘겨주는 문제
카테고리 PHP
글쓴이 정수리 작성시각 2017/06/01 13:11:47
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 11570   RSS

후크를 사용하여 session값에 따라 로그인여부를 체크하였는데 리다이렉션이 정상적으로 되지않아

 

CI질문게시판에 올려 다행히 kaido님의 답변을 참고 하여 해결하였습니다.

 

session값에 따라 리다이렉션으로 로그인 페이지로 이동되면

 

아이디와 비밀번호를 입력하고 로그인을 하면 문제가 발생합니다

 

로그인 절차의 경우 

 

아이디와 비밀번호를 입력한 후 로그인 버튼을 클릭하면

 

jquery를 통해 아이디와 비밀번호를 가지고 와서 ajax를 통해 아이디와 비밀번호가 맞으면 true값을 리턴하고

 

틀리면 false값을 리턴하도록 하여 값에 따라 form이 서브밋 되도록 하였습니다.

 

웹페이지에서 처음 접속했을 경우에는 정상적으로 잘 로그인이 되는데

 

테스트 차 session 값없이 메인창으로 이동하면 session이 없으니 당연히 로그인 페이지로 이동을 합니다.

 

그 이후 다시 로그인을 시도하면

 

ajax의 에러 창이 뜨네요;;

 

개발자도구로 살펴 보면 

 

ajax호출시 두개의 호출이 됩니다.

POST http://xxx.xx.xx.xx/~landcom/index.php/ln/ln_c/login_confirm(아이디및 비밀번호확인) 302 found

csrf_cookie_name 변경됨

GET http://XXX.XX.XX.XX/~landcom/index.php/ln/ln_c(로그인페이지)

 

두개의 url이 뜨고 응답값을 확인해 보면 두url모두 리턴값으로 로그인페이지를 리턴하더라구요;;

 

POST의 경우 true, 아니면 false을 리턴하도록 했는데 작성하였는데 말이죠

 

처음에도 302가 뜨길래 찾아보니 ci의 

 

$config['csrf_protection'] =  true로 했을 경우

 

ajax 사용시 302가 출력되던 적이 있어

 

$config['csrf_protection'] =  true 설정하고

 

form helper를 사용하여 폼을 만들면 csrf_cookie_name 필드가 생겨

 

 

이것을 ajax로 같이 넘겨주면 정상적으로 되었던 적이 있습니다;

 

현재도 그렇게 사용중이구요

 

컨트롤러에 session 값을 체크하여 리다이렉션 시키는 함수를 만들어 사용했을 경우는 정상적으로 잘되는데

 

유독 hook를 사용하면 저런 현상이 발생하네요;;

 

어떤 것이 문제 이길래 이런 현상이 발생하는 것인지 알수있을까요?

 

 다음글 포럼 ckeditor 질문입니다.. (2)
 이전글 HTML video태그와 mp4관련 질문입니다. (5)

댓글

kaido / 2017/06/01 15:35:02 / 추천 0

이전 답변과 동일 합니다.

후킹은 "모든 페이지" 에 작용됩니다.

ajax로 호출 해도 후킹이 작용되어서 에러가 난 것 입니다.

정수리 / 2017/06/01 15:59:03 / 추천 0

@kaido

답변 감사합니다.

그렇군요... 나름 hook에

로그인 페이지에서는 후크 안돌게 해놨는데도

ajax는 또 다른가 보네요;;

다행히 전처럼 후크에 해당 ajax로 들어가는 url도 넣어서 처리하였습니다.