javascript - 从所有事件选项卡中注销用户

标签 javascript angularjs cookies authentication logout

我在三个单独的选项卡中打开了应用程序的三个实例,用户从一个选项卡注销,并在同一选项卡中使用另一凭据登录,并开始使用其他两个选项卡之一进行浏览,如何注销用户从这两个选项卡?

我的前端技术是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/

相关文章:

javascript - 如何使用 ng-repeat 和键|值对进行排序

session - 在 clojure/ring 中,如何删除 cookie?

javascript - 单击后返回文本框

javascript - 使用 Backbone.paginator 进行多个排序查询参数

javascript - 如何使用 angularjs 一次添加多个图像

authentication - 我的 Web App 可以实现用户登录并保持无状态吗?

javascript - GC 期间会删除什么类型的 cookie?

javascript - 按 id 自定义聚类

javascript - 暂停/恢复 javascript 番茄时钟

javascript - Angularjs ng-disabled 无法正常工作