Ruby on rails 使用Angular.js 1.2.1设计执行重定向
我用angular 1.0.8做了一个项目,设计了最后一个版本,在Rails 4上,一切都很好,当我没有登录就请求api时,设计发送了respond 401。 拦截器得到了401并按我想要的方式处理。 但后来决定升级到最新的稳定版本1.2.1,一切都很好(只需要更改拦截器,而不是返回函数,而是返回对象),但出于某种原因,Desive现在重定向到注册页面,而不是发送401响应,不确定发生了什么,因为我测试的控制器响应状态为::unauthorized,我的拦截器做得很好。迁移到1.2.1时,有人已经遇到此问题?正如我所说,我所更改的唯一代码是拦截器本身(它与我的401响应配合得很好)。 我得到的只是一个302状态码 拦截器代码:Ruby on rails 使用Angular.js 1.2.1设计执行重定向,ruby-on-rails,angularjs,devise,Ruby On Rails,Angularjs,Devise,我用angular 1.0.8做了一个项目,设计了最后一个版本,在Rails 4上,一切都很好,当我没有登录就请求api时,设计发送了respond 401。 拦截器得到了401并按我想要的方式处理。 但后来决定升级到最新的稳定版本1.2.1,一切都很好(只需要更改拦截器,而不是返回函数,而是返回对象),但出于某种原因,Desive现在重定向到注册页面,而不是发送401响应,不确定发生了什么,因为我测试的控制器响应状态为::unauthorized,我的拦截器做得很好。迁移到1.2.1时,有人已
.config(function($httpProvider){
var interceptor = function($q, $location, $rootScope) {
return {
'responseError': function(rejection) {
if (rejection.status == 401) {
$rootScope.$broadcast('event:unauthorized');
console.log('got you trying to do something illegal...')
return rejection;
}
return $q.reject(rejection);
}
};
};
$httpProvider.interceptors.push(interceptor);
})
更新
因此,经过一段时间的尝试,我意识到使用angularjs 1.2.1获得401,并设计出我需要:
将.json格式添加到所有需要验证的服务url(例如:api/events/:id.json
)
确保config/initilizers/designe.rb上的config.navigational\u formats=[]
的数组中没有:json
并确保_xhr=true
上的config.http\u authenticable\u设置为true
但我仍然有一个问题,为什么在Angular.js 1.0.8上,即使导航格式数组具有:json
,而服务没有。json
?
这就是现在的路吗?