使用Angular.js 1.2.1设计重定向

时间:2013-11-21 18:52:55

标签: ruby-on-rails angularjs devise

我创建了一个角度为1.0.8的项目并设计了最后一个版本,在Rails 4上,一切都运行得很好,设计是在我没有登录时请求api发送响应401。 拦截器正在获得401并以我想要的方式处理它。 但后来决定升级到最后一个稳定版本1.2.1并且一切运行良好(只需要更改拦截器,而不是返回一个函数,返回一个对象),但由于某种原因设计现在重定向到sign_up页面而不是发送401响应,不知道发生了什么,因为我测试控制器响应状态::未授权,我的拦截器确实小心它。有人在迁移到1.2.1时已经遇到过这个问题吗?正如我所说,我改变的唯一代码是它自己的拦截器(它与我的401响应工作正常)。 我得到的是302 Found状态代码。

拦截器代码:

.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和Devise我需要得到401:

将.json格式添加到所有服务URL(需要身份验证,例如:api/events/:id.json)。

确保config.navigational_formats = []config/initilizers/devise.rb的数组中没有:json

并确保config.http_authenticatable_on_xhr = true设置为true

但我还有一个问题,为什么在Angular.js 1.0.8上,即使navigational_formats数组有:json且服务没有.json,这也有效?

它现在的方式是正确的吗?

0 个答案:

没有答案