我已将此模块添加到我的应用中: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:'/'});
})
答案 0 :(得分: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>
以上控制器现在将出现在所有视图中,并确保注册您的听众。