AngularJS - 새로 고침 토큰 처리?
Angular와 함께 SPA를 만들고 있습니다.서비스(JAVA)에 대한 통신이 가능한 JS.
사용자가 자신의 사용자 이름/패스를 보낼 때 서비스는 다음 두 가지를 모두 보냅니다.토큰 및 새로 고침 토큰에 액세스합니다.상태 401에 대한 응답이 오면 새로 고침 토큰을 보낸 다음 마지막 요청을 다시 보냅니다.저는 $http를 포함해서 그렇게 하려고 했지만, angular에서는 이 인터셉터에 그것을 포함시킬 수 없습니다.제가 받는 이 응답 파라미터로 원래 요청을 다시 만들 수 있는 방법이 있을까요?
다음과 같은 경우:
- 나는 401을 받습니다.
- 부탁은 아낀다
- 새로 고침 토큰이 있으면 해당 새로 고침 토큰을 보냅니다.
- 성공하면 나의 요청을 다시 보냅니다.
오류 시 / 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
'programing' 카테고리의 다른 글
GCC에서 C11? (0) | 2023.10.24 |
---|---|
div를 숨기되 빈 공간은 유지합니다. (0) | 2023.10.24 |
WP의 CPT Custom Menu Position 문제 (0) | 2023.10.19 |
오라클 호환 sql에서 튜플 비교가 가능합니까? (0) | 2023.10.19 |
하위 요소로 인해 트리거된 마우스 아웃 이벤트를 비활성화하는 방법은 무엇입니까? (0) | 2023.10.19 |