如何使用AngularJS插入拦截器以重定向到登录页面?

时间:2013-10-21 14:21:24

标签: session angularjs

我有一个登录系统,会话将持续2个小时。 2小时后,当客户端进行API调用时,他们会收到错误:

{
  "Success": false,
  "Error": {
    "ErrorCode": "002",
    "ErrorMessage": "Session expired"
  }
}

我需要在发生这种情况时将客户端重定向到/login。问题是我从单个API调用中得到了这个错误,所以不是改变每个API调用,是否可以有一个全局拦截器?

1 个答案:

答案 0 :(得分:2)

根据Interceptors找到here的示例,您可以在拦截器的response部分执行以下操作:

response: function(resp){
    // resp.data will contain your response object from the server
    if(resp.data && !resp.data.Success){
        // check for error code
        if(resp.data.Error && resp.data.ErrorCode === '002'){
            $location.path('/login');
            return $q.reject(resp);
        }
    }
    return resp || $q.when(resp);
},

这假设您的服务器在收到此错误消息时返回200,而不是401403,但这看起来像您和&#39} #39;正在做。希望有所帮助。