2016-05-31 1 views
0

SAML 보안 백엔드 위에 Angular 1 앱을 만들려고합니다. 인증되지 않은 상태에서 REST 요청을 발행하면 상태 200의 응답과 IDP에 페이지를 제출할 HTML 페이지가 표시됩니다.

이 200 응답이 내 서비스에서 내 $http(...).then(function(...){}) 메서드에 도달하는 것을 원하지 않습니다. 그래서 HTTP 인터셉터에서 200을 401 상태 코드로 변경하려고합니다.

그럴 수 있습니까?

모든 대안을 환영합니다.

답변

1

좋아, 나는 그것을 발견

return $q.reject({status: 401, error: 'UNAUTHORIZED'}); 

전체 코드 샘플 :

interceptor = function ($q, $location, $rootScope) { 
     return { 
      request: function (config) { 
       ... 
       return config || $q.when(config); 
      }, 

      requestError: function (rejection) { 
       return $q.reject(rejection); 
      }, 

      response: function (response) { 

       if (response.status === 200 && 
        response.headers()['content-type']==='text/html' && 
        response.data.startsWith("<HTML><HEAD><TITLE>SAML HTTP Post Binding</TITLE>")) { 
        //WE HAVE A SAML AUTH REQUEST 
        return $q.reject({status: 401, error: 'UNAUTHORIZED'}); 
       } 

       return response; 
      }, 

      responseError: function (rejection) { 
       ... 
      } 

     }; 
    }; 
    $httpProvider.interceptors.push(interceptor); 
+0

I 응답 방법에

을, 당신은 (401)의 상태를 설정하려면이 문을 사용할 수 있습니다 '''$ q.reject (..)''를 호출했을 때이 오류가 발생했습니다 :''부러진 인터셉터가 감지되었습니다 : 거부 된 구성 객체가 없습니다''. –