내 AngularJS에 문제가있어 쉽게 해결할 수없는 것 같습니다. 서버에 대한 사용자 권한 부여에 두 가지 서비스를 사용하고 있습니다. 권한 부여는 액세스 토큰과 새로 고침 토큰의 두 가지 토큰을 기반으로합니다.각 주입 루프
이제 전체 인증 프로세스와 서버와의 통신을 담당하는 두 번째 서비스 (Api)를 처리하는 하나의 서비스 (Auth)가 있습니다.
인증이 작동하는 방식은 사용자가 자신의 액세스 토큰을 사용하여 데이터에 액세스하는 것입니다. 토큰을 사용하지 않으면 새로 고침 토큰을 제출하고 새 액세스 토큰을 다시 가져 오려고 시도합니다.
문제는 서버가 401으로 응답하고 토큰이 무효화되면 Auth.authenticate(); 백그라운드 (리디렉션 또는 기타 없음) 및 성공하면 새 액세스 토큰으로 계속 진행하십시오.
Auth 서비스가 Api 서비스를 사용하고 있으므로 안타깝게도 Auth 서비스를 다시 Api 서비스에 삽입 할 수 없습니다. 한 곳에서 원하는 작업을 수행 할 수있는 좋은 방법이 있습니까? (컨트롤러의 매 요청마다 재 인증을 요청하지 않아도됩니까?)
일부 건축 정보 :
Auth Service (injects Api Service)
| ---- authorisation function (uses Api Service)
Api Service
| ---- Different functions to prepare data for request
| ---- One function to send all requests
| ---- One function to handle all rejected promisses which includes detection of 401 and should include "silent" re-authorisation (AuthService.authorisation)
은 정말 너무 혼란 소리가 나던 바랍니다. 나는 인터셉터를 시험해 보았지만 그 결과는 주사기 루프와 동일합니다.
내 아키텍처를 변경하지 않고 유일한 생각은 현재로드 된대로 인증 서비스의 현재 활성 인스턴스를 가져올 수있는 방법이 있는지입니다. 그러나 그것에 대한 자세한 내용을 찾을 수 없습니다.
감사합니다.
아름다운! 그게 내가 필요한거야. – Tom