AngularJs routeProvider http状态403
Posted
技术标签:
【中文标题】AngularJs routeProvider http状态403【英文标题】:AngularJs routeProvider http status 403 【发布时间】:2014-09-22 09:30:46 【问题描述】:我正在服务器端进行身份验证和授权。
在 angularJs 中,我正在使用这样的 routeProvider 进行路由。
$routeProvider.
when('/',
templateUrl: 'partials/_home',
controller: 'HomeCtrl'
).
when('/home',
templateUrl: 'partials/_home',
controller: 'HomeCtrl'
).
when('/users',
templateUrl: 'partials/_users',
controller: 'UserCtrl'
).
when('/users/:id',
templateUrl: 'partials/_userForm',
controller: 'UserCtrl'
).
otherwise(
redirectTo: '/'
);
这是要解决的问题,当我得到一个 403 角度没有显示服务器页面时,它什么也不做。
有人对如何处理这个问题提出了建议吗?
【问题讨论】:
错误 403“禁止执行访问” – 尝试打开 URL/test/partials/_userForm
– 你有什么回应?它与 AngularJS 没有任何共同之处,它是你的服务器。如果 403 发生,你对 Angular 有什么期望?重定向到某个登录页面?
是的,这是服务器响应,我想要的是显示那个 403 错误页面的内容。但是当出现该错误时,角度没有显示任何内容。
您要显示此模板或处理错误 403?
我的服务器提供的403错误页面。
我遇到了同样的错误,但我想展示模板,处理这种情况的最佳做法是什么?
【参考方案1】:
AngularJS 拦截器 - 更新到 v1.4.2
拦截器是通过将它们添加到 $httpProvider.interceptors 数组而向 $httpProvider 注册的服务工厂。工厂被调用并注入依赖项(如果指定)并返回拦截器。
阅读更多:$http angularjs Doc
部分配置(部分)
.config(function ($httpProvider)
$httpProvider.interceptors.push('responseObserver');
)
响应 - 观察者工厂
403.html
和 500.html
是现有的 HTML 文件,样式很好,带有一些用户帮助内容。
.factory('responseObserver', function responseObserver($q, $window)
return
'responseError': function(errorResponse)
switch (errorResponse.status)
case 403:
$window.location = './403.html';
break;
case 500:
$window.location = './500.html';
break;
return $q.reject(errorResponse);
;
);
扩展有关拦截器的知识:http://djds4rce.wordpress.com/2013/08/13/understanding-angular-http-interceptors/
【讨论】:
很高兴听到这个消息,编码愉快 你不添加$window
作为依赖吗?否则,它可以工作。
它就像一个魅力!我使用 $location 而不是 $window以上是关于AngularJs routeProvider http状态403的主要内容,如果未能解决你的问题,请参考以下文章
AngularJs:使用 $routeProvider 调用控制器两次
AngularJs 使用 $routeProvider 的路由问题
AngularJs routeProvider http状态403
angularjs 报错Unknown provider: $routeProvider