2016-12-23 1 views
3

ユーザーのUIにAngularJS(1)が使用されています。 デフォルトページの変更動作が必要です。 ユーザーが承認されていない場合、ログインページの別のケース - >特別ページに移動する必要があります。匿名のモジュールに角の既定のページルーティング

anonimModule.config(function ($routeProvider, anonimTemplateManager, anonimUrlManager) { 
    $routeProvider 
     .when('/', { 
      templateUrl: anonimTemplateManager.getLoginPath(), 
      controller: 'loginCtrl' 
     }) 

の設定

私は(唯一例えば、ログインのために)この動作一つだけの時間を設定することができますが、ユーザが許可した場合特別ページはアクセスできません。 $ rootScopeからにアクセスしようとしました。(私の問題を解決するため) - 失敗しました。

ルーティングの動的動作を実装することは可能ですか? 私はそれを実装するための例やアイデアを教えていただけますか?

答えて

2

あなたは状態のルーティングを使用することができ、その後、あなたが例えばstatechangestartイベント使用することができます: -

.state('user.dashboard', { 
     templateUrl: 'pages/my/dashboard/deshboard.html', 
     controller: 'myDashboardController' 
     url: '/dashboard', 
     access: { 
      loginRequired: true 
     } 

をして、app.jsにあなたは$ stateChangeStart、ユーザーがにauthrizeであるかどうかをチェックしますいくつかの認証サービスを使用することができます状態またはない

$rootScope.$on('$stateChangeStart', 
      function (event, toState) { 
       var authorised; 
       if (toState.access !== undefined) { 
        authorised = authorizationServie.authorize(toState.name); 
        if (authorised === false) { 
         $state.go("loginState"); 
         event.preventDefault(); 
        } 
       } 
      }); 
3

他にも使用してください。

ちょうどのようなので、それをチェーン:

.when('/foo', { 
    templateUrl: 'foo.html', 
    controller: fooController 
) 
.when('/bar', { 
    templateUrl: 'bar.html', 
    controller: barController 
) 
.otherwise(
    redirect: '/foo' 
) 
+0

Basは、ユーザーが承認されているかどうかをどのように確認しますか? – Sergii

+0

サービスの作成を試みることができます。サービスを作成しようとすると、ユーザーが許可されている場合に、ユーザーが権限を持っているかどうかをチェックして、ブール値を設定します –

2

あなたはまた、あなたのanonimTemplateManager.getLoginPath()方法で別のページに移動するには$state.go('/url')を書くことができます。同じ仕事のため

いくつかの他の方法$state.go('/url')

    • $location.url();
    • $window.location.href = '/index.html';

    すべてを試みません。

  • 1

    あなたがアプリケーションにログインするときに、ユーザーが、アプリケーション内のログインページやディスプレイでアプリケーションの必須のルートにログインしていない場合、あなたはいつでも状態の変化を確認する必要があり、ローカルストレージに認証データを保存することをアクセスアラート...これを行うために:

    var app=angular.module("myApp",["LocalStorageModule"]); 
    app.run(function($rootScope,$state,localStorageService){ 
        rootScope.$on("$stateChangeSuccess", function (event, toState, parameters, from) { 
        if(localStorageService.get("authorizationData") !== 'logined') 
         $state.go("loginPage"); 
        }); 
    } 
    

    も、あなたは変数からstateChangeSuccessでイベントparametrと以前の状態を保存し、現在の状態に戻ってくるためにrooScopeでこれを保存することができます。

    関連する問題