auth0-samples / auth0-angularjs-sample

These samples are made up of steps to add Auth0 to an Angular JS app
28 stars 111 forks source link

logout from auth0 is not working #41

Open sashr17 opened 7 years ago

sashr17 commented 7 years ago

// home.controller.js

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

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

MattWood21 commented 7 years ago

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>
chenkie commented 7 years ago

@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
});