2010-08-15 2 views
3

나는 이미 웹 사이트를 작동시키고있다. (나는 처음부터 일하고 있지 않다.) 내가 가진 문제는 많은 콘텐츠가 로그인 한 경우에만 사용할 수 있다는 것입니다 (거의 모든 것). 그래서 때로는 (ajax를 사용하여) 표시 할 무언가 팝업을 가져 오는 모달 팝업이 있습니다.jquery - 로그인 한 경우 ajax 테스트?

내 서버 측 코드에서 누군가가 로그인하지 않으면 로그인 페이지로 리디렉션됩니다.

누군가가 페이지에 있고 더 이상 로그인하지 않은 것처럼 이상한 효과를 내며, 팝업되는 모달은 로그인 페이지를 표시하려고합니다.

이 문제를 해결하는 방법에는 어떤 것이 있습니까?

내가 생각할 수있는 유일한 점은 로그인되어 있는지 확인하고 모든 Ajax 요청과 함께 URL이 로그인되어 있는지 확인하고 자바 스크립트가 작동하는지 확인할 수있는 URL이 있다는 것입니다. 따라서.

다른 가능성이 있기를 바랍니다.

답변

5

나는 이것을 이렇게 풀었다.

  1. 서버 측에서는 요청이 ajax인지 여부에 따라 프로세스 인증 오류가 다르게 처리됩니다. 첫 번째 경우 - 401 '인증되지 않은'응답을 반환하고 두 번째 - 로그인 페이지로 리디렉션합니다.
  2. 클라이언트 측에서는 일반적인 jquery ajax 오류 처리기를 등록하여 401 오류를 catch하고 사용자를 로그인 페이지로 리디렉션합니다.

    $.ajaxSetup({ 
        error: function(event, request, options, error) { 
         switch (event.status) { 
          case 401: common.setLocation('/sign-in'); break; 
          ... 
         } 
        } 
    }); 
    

그것은 아주 간단한 해결책은, 당신도 각각의 특정 요구를 수정해야합니다, 그래서 희망이 도움이되지 않습니다.

+0

요청이 ajax인지 아닌지를 테스트하는 좋은 방법이 있습니까? – Matthew

+1

@Matthew 'X-Requested-With'요청 헤더를 확인할 수 있습니다. 그것은 각각의 아약스 요청에 jquery에 의해 설정됩니다. 이를 수행하는 방법은 언어 및 프레임 워크에 따라 다르지만 헤더를 처리하기위한 API가 있어야합니다. –

관련 문제