2011-08-10 3 views
3

첫 번째 찔림을 돕는 데 필요한 모든 정보를 얻지는 못 하겠지만 최선을 다해 편집 할 것입니다.로컬로 401 작업 중, 스테이징 서버로 302를 얻는 대신

스프링 - 보안 - 코어 플러그인을 사용하는 Grails 1.3.7 애플리케이션이 있습니다. 나는 세션 타임 아웃과 아약스 요청을 처리하는 코드 작업을하고있다. 나는 다음과 같은 한 글로벌 자바 스크립트 파일에서

def authAjax = { 
    session.SPRING_SECURITY_SAVED_REQUEST_KEY = null 
    response.sendError HttpServletResponse.SC_UNAUTHORIZED 
} 

:

$.ajaxSetup({ 
    error: function(xhr, status, err) { 
     if (xhr.status == 401) { 
     $('#login-dialog').dialog({ // show ajax login }); 
     } 
    } 
}); 

내가 예상대로이 로컬로 모든 작품 실행하면 인 LoginController, 나는 다음과 같은 있습니다. 세션 시간 초과가 발생하면 FireBug 콘솔에 401이 표시되고 로그인 대화 상자가 표시됩니다. 이것을 스테이징 서버에 배포하면 302를 얻지 못하고 401을받지 못하는 authAjax에 절대 빠지지 않습니다.

로컬 개발과 준비 사이의 주된 차이점은 mod_proxy와 apache httpd를 함께 사용한다는 것입니다. 요청을 Tomcat에 앞뒤로 프록시하십시오. 내 가정은 이것이 내가 302를 얻고 401을 얻지 못하는 이유이지만 100 % 확실하지 않다는 것입니다.

내 질문 (들)

  1. 는 로컬 않지만, 여전히 mod_proxy를를 사용하는 것처럼 작동하도록 내가이 문제를 해결하려면 어떻게 302
  2. 의 원인이 mod_proxy를입니다.

UPDATE : 로컬 최근 댓글 당

, 나는 401을 얻을 때 나는이보고 오전 :

POST https://localhost:8080/admin/bookProject/edit 302 Moved Temporarily 
GET http://localhost:8080/login/authAjax 401 Unauthorized 

그리고 나는 authAjax 방법에서 디버그를보고하고를

스테이징 서버에서 수신 중 :

POST https://server.com/admin/bookProject/edit 302 Moved Temporarily 

그리고 나는 이 아니며은 authAjax에서 디버그를보고 있으므로 거기에 도착하지도 않습니다. 당신의 Ajax 호출에 대한

+0

이 우리를 도와 더 비트하십시오 - 당신은 우리가 당신 (302) (재)로되고 있는지 URL을 알려 할 수 있습니까? 서버 측 로그인 페이지로 리디렉션 될 수 있습니다 (예 :). –

+0

def authAjax에 log.debug를 추가하여 준비 서버에 있는지 확인하십시오. –

+0

자세한 정보로 업데이트되었습니다. – Gregg

답변

0

코드 :

statusCode: { 
    401: function(){ 
     // redirect code to login page 
    } 
} 
관련 문제