2

我已将此模块添加到我的应用程序中:https ://github.com/witoldsz/angular-http-auth/blob/gh-pages/lib/http-auth-interceptor.js

它在 401 响应上广播消息,非常方便!只是不确定如何让我的 $routeProvider 监听 $rootscope.$broadcast。我想重定向到 401 上的登录页面。

我的 $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 回答