내 nodejs, express 및 angularjs 응용 프로그램에 대해 jwt 인증을 구현하려고합니다. 지금까지 토큰을 생성하고 내 localStorage
에 저장했습니다.내 인증 토큰 인터셉터가 새로운 경로의 요청/응답을 가로 채지 않습니다.
$httpProvider.interceptors.push('authInterceptor');
지금까지 내가 서버에 자격 증명을 보낸 다음과 같이
app.factory('authInterceptor', function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.localStorage.myToken) {
config.headers.Authorization = 'Bearer ' + $window.localStorage.myToken;
}
return config;
},
response: function (response) {
if (response.status === "401") {
$window.location.replace('/dash');
}
return response || $q.when(response);
}
};
});
내가 설정 파일에 인터셉터를 추진해 왔습니다 다음과 같이 this 튜토리얼에 따르면, 나는 각 공장에 authInterceptor
을 구현 한 토큰을 생성하여 localStorage
에 저장했습니다.
localStorage에서 토큰을 삭제하지 않았고 토큰이 만료되지 않은 한 계속 유지해야한다고 생각합니다. angularjs의 백그라운드 ajax 호출을 사용하여로드 된 페이지 내에서 요청을하면 인증 헤더가 가정 된대로 설정됩니다.
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiYSIsInR5cGUiOiJzYWxlcyIsImlhdCI6MTQyMjI2MDExMCwiZXhwIjoxNDIyMjc4MTEwfQ.Iv6W-Tc8Qm4FGclzmgbtjvWFz_tyDwEvrFmMmucONpY
그러나 어느 나는 새로운 경로를 탐색 할 때 내 요청도 내 응답이 차단됩니다. 예를 들어, 나는 '/ sales'경로를 가지고 있습니다. 그러나 주소 표시 줄에서 판매 경로를 탐색 할 때 요격 인증 헤더가 요격기에 의해 설정되지 않으므로 서버에서 승인 오류 401이 반환됩니다.이 오류는도 중첩되지 않습니다. 따라서 /dash
으로 리디렉션되지 않습니다. 이
힌트 : responseError를 본 적이 있습니까? – Blackunknown
'NetworkError : 401 Unauthorized - http : // localhost : 9090/sales' – Pravin
사과드립니다. 나는 분명히해야했습니다. 감각적으로 : responseError : function (거부) { if (rejection.status == 401) { // 경로로 무엇인가}} – Blackunknown