Angular - маршрут перенаправления выхода

Я пытаюсь создать маршрут, который очищает сеанс пользователей и перенаправляет их обратно на домашнюю страницу корня.

.config(function config( $routeProvider, $stateProvider ) {

    $routeProvider.
        when('/logout', {resolve: {redirect: function(Session){
            Session.clear();
            return "/home";
        }}});

Я, очевидно, делаю что-то неправильно здесь, называя

$location.path("/logout");

... игнорирует функцию и перенаправляет обратно на маршрут по умолчанию. Я попытался добавить в консоль инструкции console.log, чтобы увидеть, вызвана ли она.

Я неправильно использую функцию перенаправления?

Ответ 1

Рассматривали ли вы вопрос о логике выхода в отдельный контроллер? Будет немного более чистым, более надежным и сделать перенаправление более простым. Например:

function LogoutController($location) {
    Session.clear();
    $location.path('/home');
}

Ваш маршрут:

when('/logout', {
  template: '', //A template or templateUrl is required by AngularJS, even if your controller always redirects.
  controller: 'LogoutController'
}).    

Ответ 2

У меня была такая же проблема, и вместо этого я создал функцию выхода из системы в моем навигационном контроллере, который попадает при щелчке по URL-адресу.

 <li><a href="" ng-click="logout()" target="_self">Log Out</a></li>

И в моем навигационном контроллере:

$scope.logout = function () {
                localStorage.clearAll();
                window.location = '/logout';
            };

Я запускаю ASP.NET за Angular, поэтому мне нужен браузер (а не angular) для маршрутизации/выхода из системы, который отображается в конфигурации ASP.NET(выполняет ли еще несколько сеансов очистки и перенаправляет на аутентификацию приложение)

Надеюсь, что это поможет