사용자가 한 탭에서 로그 아웃하면 토큰을 사용 중지/파괴하기 위해 서버에 요청을 보낼 수 있습니다.
토큰이 유효한지 웹 API에서 확인할 수 있습니다. 권한이없는 상태 코드를 반환 할 수없는 경우 확인할 수 있습니다.
if (!IsValidToken())
return Request.CreateResponse(HttpStatusCode.Unauthorized,ErrorMessage);
및 서버에서 허가받지 않은 상태를 수신 할 때 인터셉터를 사용하여 로그인 페이지로 사용자를 리디렉션하십시오.
.factory('myInterceptor', ['$q', '$location', '$injector', function ($q, $location, $injector) {
return {
response: function (response) {
return response || $q.when(response);
},
responseError: function (rejection) {
if (rejection.status === 401) {
var stateService = $injector.get('$state');
stateService.go('login');
}
return $q.reject(rejection);
}
}
}])
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('myInterceptor');
}]);
이 방법으로 사용자는 다른 탭에서 추가 요청을 할 경우에만 로그인하도록 리디렉션됩니다. 요청을하지 않고 리디렉션되도록하려면 $ interval을 사용하여 몇 초마다 토큰의 유효성을 검사 할 수 있습니다.
출처
2017-11-25 08:40:17
NTP
[SO] (https://stackoverflow.com/questions/13513874/logout-all-open-tabs-automatically-when-user-logs-out-in-one-of-them) 문제. –
@JeroenHeier 로컬 저장소를 사용하지 않습니다. 토큰이 쿠키에 저장됩니다. – Rachmaninoff
@ JeroenHeier 사용자가 로그인 할 때 localstorage에서 가능하지 않은 사용자도 로그 아웃하려고합니다. 따라서 사용자가 로그인해도 sessionStorage가 적합하지 않습니다. , 탭에서 나는 그를 다른 탭에도 로그인시키고 싶다. – Rachmaninoff