diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/LoginRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/LoginRestApi.java index 0b9c9a612ff..0a239221ef2 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/LoginRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/LoginRestApi.java @@ -17,7 +17,6 @@ package org.apache.zeppelin.rest; import org.apache.shiro.authc.*; -import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.apache.zeppelin.annotation.ZeppelinApi; import org.apache.zeppelin.server.JsonResponse; @@ -112,22 +111,15 @@ public Response postLogin(@FormParam("userName") String userName, LOG.warn(response.toString()); return response.build(); } - + @POST @Path("logout") @ZeppelinApi public Response logout() { JsonResponse response; - Subject currentUser = org.apache.shiro.SecurityUtils.getSubject(); currentUser.logout(); - - Map data = new HashMap<>(); - data.put("principal", "anonymous"); - data.put("roles", ""); - data.put("ticket", "anonymous"); - - response = new JsonResponse(Response.Status.OK, "", data); + response = new JsonResponse(Response.Status.UNAUTHORIZED, "", ""); LOG.warn(response.toString()); return response.build(); } diff --git a/zeppelin-web/src/components/navbar/navbar.controller.js b/zeppelin-web/src/components/navbar/navbar.controller.js index 702a2573508..61aa1b85175 100644 --- a/zeppelin-web/src/components/navbar/navbar.controller.js +++ b/zeppelin-web/src/components/navbar/navbar.controller.js @@ -54,30 +54,24 @@ angular.module('zeppelinWebApp') $scope.logout = function() { var logoutURL = baseUrlSrv.getRestApiBase() + '/login/logout'; - var request = new XMLHttpRequest(); - - //force authcBasic (if configured) to logout by setting credentials as false:false - request.open('post', logoutURL, true, 'false', 'false'); - request.onreadystatechange = function() { - if (request.readyState === 4) { - if (request.status === 401 || request.status === 405 || request.status === 500) { - $rootScope.userName = ''; - $rootScope.ticket.principal = ''; - $rootScope.ticket.ticket = ''; - $rootScope.ticket.roles = ''; - BootstrapDialog.show({ - message: 'Logout Success' - }); - setTimeout(function() { - window.location.replace('/'); - }, 1000); - } else { - request.open('post', logoutURL, true, 'false', 'false'); - request.send(); - } - } - }; - request.send(); + + //for firefox and safari + logoutURL = logoutURL.replace('//', '//false:false@'); + $http.post(logoutURL).error(function() { + //force authcBasic (if configured) to logout + $http.post(logoutURL).error(function() { + $rootScope.userName = ''; + $rootScope.ticket.principal = ''; + $rootScope.ticket.ticket = ''; + $rootScope.ticket.roles = ''; + BootstrapDialog.show({ + message: 'Logout Success' + }); + setTimeout(function() { + window.location.replace('/'); + }, 1000); + }); + }); }; $scope.search = function(searchTerm) {