Open sashr17 opened 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>
@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
});
// home.controller.js
vm.logoutFromAuth0 = function() { angularAuth0.logout({returnTo: 'http://localhost:3001/'}); authService.logout(); }
After logging out, its not redirecting to 'http://localhost:3001/'