2

このモジュールをアプリに追加しました:https ://github.com/witoldsz/angular-http-auth/blob/gh-pages/lib/http-auth-interceptor.js

401応答でメッセージをブロードキャストするので、とても便利です。$routeProviderに$rootscope。$broadcastをリッスンさせる方法がわかりません。401sのサインインページにリダイレクトしたいのですが。

私の$routeProvideは次のようになります。

var app = angular.module('demoApp', ['http-auth-interceptor','tastypieModule'])
    .config(function($routeProvider) { $routeProvider.
        when('/', {controller:HomeCrtl, templateUrl:'partials/home.html'}).
        when('/sign-in', {controller:SiginInCtrl, templateUrl:'partials/sign-in.html'}).
        otherwise({redirectTo:'/'});
})
4

1 に答える 1

3

$routeProviderにそれをリッスンさせることはありません。コントローラでそれをリッスンし、$locationを使用してアプリケーションを適切なルートに送信します。

app.controller('MainAppCtrl', function($scope, $rootScope, $location) {
    $rootScope.$on('event:auth-loginConfirmed', function(){
          $location.path('/');
    });
});

編集:あなたはおそらくたくさんのコントローラーを持っているので、あなたはあなたのngViewをラップする親コントローラーを持ちたいと思うでしょう...

<div ng-controller="MainAppCtrl">
    <div ng-view>
    </div>
</div>

これで、上記のコントローラーがすべてのビューに表示され、リスナーを登録することができます。

于 2012-10-30T13:39:19.603 に答える