2016-06-15 2 views
0

나는 간단한 jhipster 앱을 가지고 있습니다. 인증 된 사용자가 url에 대한 홈 페이지로 리디렉션되도록하고 싶습니다.잘못된 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(); 
       }] 
      } 
     }); 
    } 
})(); 

당신이 볼 수 있듯이을의 아래에 언급 한 바와 같이 이전에 나는 home.state.js을 변경하고 login.state.js을 추가했다 root가 이제 로그인 페이지입니다. 인증 된 사용자가 url을 잘못 입력하면 평소처럼 로그인 페이지가 나타납니다. 잘못된 URL 조회가 발생하여 사용자를 /home (으)로 리디렉션하고 싶습니다.

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에서 사용할 수있는 다른 옵션을 사용할 수 있습니다 :

auth.service.js 안에 나는이 조각을 가지고있다. $ urlRouterProvider를 삽입하고 그 안에 기본 상태를 전달하십시오.

$ urlRouterProvider.otherwise ('/ home');

따라서 정의 된 URL 이외의 경우 전달 된 URL로 리디렉션됩니다. 자세한 내용은

:. http://angular-ui.github.io/ui-router/site/#/api/ui.router.router $ urlRouterProvider

+0

덕분에 많은 ... – fatCop

관련 문제