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

Session 如何使用AngularJS插入拦截器重定向到登录页面?,session,angularjs,Session,Angularjs,我有一个登录系统,将举行会议2小时。2小时后,当客户端进行API调用时,返回一个错误: { "Success": false, "Error": { "ErrorCode": "002", "ErrorMessage": "Session expired" } } 发生这种情况时,我需要将客户端重定向到/login。问题是,我从单个API调用中得到了该错误,因此不必更改每个API调用,是否可以有一个全局拦截器?按照找到的拦截器的示例,您可以在拦截器的响应部分执行以下

我有一个登录系统,将举行会议2小时。2小时后,当客户端进行API调用时,返回一个错误:

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

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

按照找到的
拦截器的示例,您可以在拦截器的
响应
部分执行以下操作:

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
,而不是
401
403
,但这看起来是您正在执行的操作。希望对您有所帮助。

您可以添加http拦截器,检查答案并根据错误代码重定向到登录。由于API在上一个版本中发生了一些更改,所以您使用的是angular的哪个版本。另一个问题:当您出错时,您会得到什么http状态?200还是4xx?(它将决定您是否需要将拦截器设置为成功或错误hanlder)