auth0-angularjs-sample icon indicating copy to clipboard operation
auth0-angularjs-sample copied to clipboard

logout from auth0 is not working

Open sashr17 opened this issue 9 years ago • 2 comments

// home.controller.js

vm.logoutFromAuth0 = function() { angularAuth0.logout({returnTo: 'http://localhost:3001/'}); authService.logout(); }

After logging out, its not redirecting to 'http://localhost:3001/'

sashr17 avatar Nov 07 '16 07:11 sashr17

Assuming you're using Angular 1.x with UI-Router as in the examples?

If so you in auth.service.js have this. Note the addition of $state.go('Login'); for UI-Router to go to that state on logout but it can be any UI-Router state.

// auth.service.js

function logout() {
            localStorage.removeItem('id_token');
            localStorage.removeItem('profile');
            authManager.unauthenticate();
            $state.go('Login');
        }

I just inject the authService into the main controller then add the ngClick directive onto any element I want the user to click to logout (not sure if assigning authService to vm is truly necessary or not):

// home.controller.js

angular
      .module('app')
      .controller('HomeController', HomeController);

    HomeController.$inject = ['$scope', 'authService', '$state'];

    function HomeController($scope, authService, $state) {
        var vm = this;
        vm.authService = authService;
         .... 
    }

And add ngClick directive in html:

// home.html

<a class="dropdown-menu__item" href="#" ng-click="authService.logout()">Log Out</a>

MattWood21 avatar Nov 10 '16 05:11 MattWood21

@sashr17 you'll need to whitelist your logout URL in your Auth0 dashboard. This can either be done globally for all clients from here: https://manage.auth0.com/#/account/advanced

Or (recommended) you should whitelist a logout URL for only the client you're interested in. The spot to do this can be found in the client settings of that particular client in the Auth0 dashboard.

For the second option, you'll need to provide the client_id in your logout call as such:

angularAuth0.logout({
  returnTo: 'http://localhost:3000/',
  client_id: AUTH0_CLIENT_ID
});

chenkie avatar Dec 02 '16 23:12 chenkie