配置块非常适合两段可能对您有所帮助的代码。
首先,您可以使用它来注入一个 $http 拦截器,该拦截器将处理失败的身份验证调用和重定向。
angular.module("app", [])
.config(function ($httpProvider) {
$httpProvider.interceptors.push("authInterceptor");
});
您可以将此 $http 拦截器 编写为名为“authInterceptor”的工厂(未显示)。更多here,但重点是它可以从 $http 响应中查找某些状态码,例如 401,并根据需要重定向到您的错误页面
根据您正在使用的路由,您可以使用路由 resolve 属性来保持加载路由,直到数据被解析。如果被拒绝,您创建的拦截器将重新路由。
angular.module("app", [])
.config(function ($routeProvider, $httpProvider, $http) {
$routeProvider
.when('/', {
controller:'MainCtrl',
template:'<h1>Hello!<h1>',
resolve:{
userData: return $http.get('/api/authentication');
}
});
$httpProvider.interceptors.push("authInterceptor");
});
最后一种选择是运行块代替进行初始身份验证调用。 run 块在配置之后但在您的应用加载之前运行。
angular.module("app", [])
.config(function ($routeProvider, $httpProvider, $http) {
$httpProvider.interceptors.push("authInterceptor");
})
.run(function ($http) {
$http.get('/api/authentication');
});
我不会尝试只运行此代码。您必须编写拦截器服务。您必须加载路由器模块等。希望这会有所帮助。