渲染状态更新为401的json

时间:2015-02-19 14:54:07

标签: ruby-on-rails json angularjs

我正在尝试添加一个检查用户的before_action,如果没有用户,则将json返回到角度应用程序,状态为401。

该功能只是

 def authenticate_user
   if !logged_in
     render json: {:status => 401}
   end
 end

然而,这永远不会到达我的httpInterceptor并将json直接呈现给页面。如何使用正确的标题返回此响应,以便拦截器可以处理401?

app.run(function($http, $cookies, $rootScope, $location) {
  $http.defaults.headers.common['X-CSRFToken'] = $cookies.csrftoken;
  $http.defaults.headers.common['Content-Type'] = 'application/json';
});

app.factory('myHttpInterceptor', ['$cookies', '$location', '$window',
  function($cookies, $location, $window) {
    return {
      'request': function(config) {
        return config
      },
      'response': function(response) {
        if ($location.$$path !== '/' && !$cookies.csrftoken){
          $location.path('/');
        }
        return response
      }
    }
  }
]);

1 个答案:

答案 0 :(得分:0)

您是否将拦截器添加到httpProvider?

app.config(function($httpProvider) {
    $httpProvider.interceptors.push('myHttpInterceptor');
})

请参阅:https://docs.angularjs.org/api/ng/service/ $ http