2016-06-15 7 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にヒットした場合、通常のログインページが表示されます。無効なURLヒットの場合、ユーザーを/homeにリダイレクトします。 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

関連する問題