Session 如何使用AngularJS插入拦截器重定向到登录页面?
我有一个登录系统,将举行会议2小时。2小时后,当客户端进行API调用时,返回一个错误:Session 如何使用AngularJS插入拦截器重定向到登录页面?,session,angularjs,Session,Angularjs,我有一个登录系统,将举行会议2小时。2小时后,当客户端进行API调用时,返回一个错误: { "Success": false, "Error": { "ErrorCode": "002", "ErrorMessage": "Session expired" } } 发生这种情况时,我需要将客户端重定向到/login。问题是,我从单个API调用中得到了该错误,因此不必更改每个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)