我在三个单独的选项卡中打开了应用程序的三个实例,用户从一个选项卡注销,并在同一选项卡中使用另一凭据登录,并开始使用其他两个选项卡之一进行浏览,如何注销用户从这两个选项卡?
我的前端技术是AngularJS,API是用Web Api编写的,我使用 token 进行身份验证, token 存储在 session cookie中。
最佳答案
当用户从一个选项卡注销时,您可以向服务器发送请求以禁用/销毁 token 。
在您的 Web API 中,您可以检查 token 是否有效,如果无效,您可以返回未经授权的状态代码。
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 每隔几秒检查 token 的有效性。
关于javascript - 从所有事件选项卡中注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47483605/