2016-06-15 3 views
0

У меня есть простое приложение для jhipster. Я хочу, чтобы прошедшие проверку пользователи перенаправлялись на домашнюю страницу для недопустимого url. Раньше я изменил home.state.js и добавил login.state.js, как указано ниже:Переадресовать Авторизованный пользователь на главную страницу для недопустимого URL-адреса

home.state.js

(function() { 
    'use strict'; 

    angular 
     .module('anvilIqApp') 
     .config(stateConfig); 

    stateConfig.$inject = ['$stateProvider']; 

    function stateConfig($stateProvider) { 
     $stateProvider.state('home', { 
      parent: 'app', 
      url: '/home', 
      data: { 
       authorities: ['ROLE_USER'] 
      }, 
      views: { 
       '[email protected]': { 
        templateUrl: 'app/home/home.html', 
        controller: 'HomeController', 
        controllerAs: 'vm' 
       } 
      }, 
      resolve: { 
       mainTranslatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate,$translatePartialLoader) { 
        $translatePartialLoader.addPart('home'); 
        return $translate.refresh(); 
       }] 
      } 
     }); 
    } 
})(); 

login.state.js

(function() { 
    'use strict'; 

    angular 
     .module('anvilIqApp') 
     .config(stateConfig); 

    stateConfig.$inject = ['$stateProvider']; 

    function stateConfig($stateProvider) { 
     $stateProvider.state('login', { 
      parent: 'app', 
      url: '/', 
      data: { 
       authorities: [] 
      }, 
      views: { 
       '[email protected]': { 
        templateUrl: 'app/components/login/login.html', 
        controller: 'LoginController', 
        controllerAs: 'vm' 
       } 
      }, 
      resolve: { 
       mainTranslatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate,$translatePartialLoader) { 
        $translatePartialLoader.addPart('login'); 
        return $translate.refresh(); 
       }] 
      } 
     }); 
    } 
})(); 

Как вы можете видеть, root - это страница входа в систему. Когда аутентифицированный пользователь попадает на недопустимый url, появляется страница входа в систему, как обычно. Я хочу перенаправить пользователя на /home за неверный URL-адрес.

внутри auth.service.js У меня есть этот фрагмент:

function authThen() { 
    var isAuthenticated = Principal.isAuthenticated(); 

    // an authenticated user can't access to login and register pages 
    if (isAuthenticated && $rootScope.toState.parent === 'account' && ($rootScope.toState.name === 'login' || $rootScope.toState.name === 'register')) { 
     $state.go('home'); 
    } 

    // recover and clear previousState after external login redirect (e.g. oauth2) 
    if (isAuthenticated && !$rootScope.fromState.name && getPreviousState()) { 
     var previousState = getPreviousState(); 
     resetPreviousState(); 
     $state.go(previousState.name, previousState.params); 
    } 

    if ($rootScope.toState.data.authorities && $rootScope.toState.data.authorities.length > 0 && !Principal.hasAnyAuthority($rootScope.toState.data.authorities)) { 
     if (isAuthenticated) { 
      // user is signed in but not authorized for desired state 
      $state.go('accessdenied'); 
     } 
     else { 
      // user is not authenticated. stow the state they wanted before you 
      // send them to the login service, so you can return them when you're done 
      storePreviousState($rootScope.toState.name, $rootScope.toStateParams); 

      // now, send them to the signin state so they can log in 
      $state.go('accessdenied').then(function() { 
       $state.go('login'); 
      }); 
     } 
    } 
} 

ответ

1

Вы можете использовать в противном случае опция доступна в $ urlRouterProvider. Внесите $ urlRouterProvider и передайте в это состояние по умолчанию.

$ urlRouterProvider.otherwise ('/ home');

Так что для URL-адресов, отличных от указанного, будет перенаправлен URL-адрес, переданный в противном случае.

Для получения более подробной информации:. http://angular-ui.github.io/ui-router/site/#/api/ui.router.router $ urlRouterProvider

+0

спасибо большое ... – fatCop

Смежные вопросы