programing

AngularJS - 새로 고침 토큰 처리?

telebox 2023. 10. 24. 21:15
반응형

AngularJS - 새로 고침 토큰 처리?

Angular와 함께 SPA를 만들고 있습니다.서비스(JAVA)에 대한 통신이 가능한 JS.

사용자가 자신의 사용자 이름/패스를 보낼 때 서비스는 다음 두 가지를 모두 보냅니다.토큰 및 새로 고침 토큰에 액세스합니다.상태 401에 대한 응답이 오면 새로 고침 토큰을 보낸 다음 마지막 요청을 다시 보냅니다.저는 $http를 포함해서 그렇게 하려고 했지만, angular에서는 이 인터셉터에 그것을 포함시킬 수 없습니다.제가 받는 이 응답 파라미터로 원래 요청을 다시 만들 수 있는 방법이 있을까요?

다음과 같은 경우:

  1. 나는 401을 받습니다.
  2. 부탁은 아낀다
  3. 새로 고침 토큰이 있으면 해당 새로 고침 토큰을 보냅니다.
  4. 성공하면 나의 요청을 다시 보냅니다.
  5. 오류 시 / login 페이지로 리디렉션

    'use strict';
    
    angular.module('testApp')
        .factory('authentificationFactory', function($rootScope, $q, $window, $location, CONF) {
    
    return {
        request: function(config) {
            config.headers = config.headers || {};
            if ($window.sessionStorage.token) {
                config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
            }
            console.log(config);
            $rootScope.lastRequest = config;
            return config;
        },
    
        response: function(response) {
            console.log($rootScope.lastRequest);
            if (response.status === 401) {
                if ($window.sessionStorage.refreshToken) {
    
                    //Save, request new token, send old response
                    //if it fails, go to login
    
                    $location.url('/login');
                } else {
                    $location.url('/login');
                }
            }
            return response || $q.when(response);
        }
    };
    });
    

보너스 질문(메인 질문이 더 중요):제 서비스에도 연결되는 모바일 앱이 2개 있는데, 웹 앱에서 로그인하면 잠시 후 모바일 앱에서 새 리프레쉬 토큰을 가져가고 웹 앱의 리프레쉬 토큰은 더 이상 유효하지 않습니다.그 문제를 해결하기 위한 최선의 방법은 무엇입니까?

시간 내주셔서 감사합니다, 잘 부탁드립니다.

이것을 보세요: https://github.com/witoldsz/angular-http-auth .

인증 후 요청을 다시 재생하기 위해 버퍼를 사용합니다.

Angular와 같은 SPA에서 리프레쉬 토큰을 전송하고 저장하는 것을 강력히 권고합니다.

세션 저장소 또는 로컬 저장소를 사용하는 경우 이 새로 고침 기회의 창이 열립니다.XSS 공격 또는 컴퓨터를 방치한 사용자가 캡처할 토큰입니다.

자세한 내용은 이 기사 또는 이 질문을 참조하십시오.

언급URL : https://stackoverflow.com/questions/23366678/angularjs-handling-refresh-token

반응형