2013-10-21 40 views
1

我有一个登录系统,将持续2小时的会话。 2小时后,当客户端发出的API调用,他们回来的错误:如何插入AngularJS拦截器重定向到登录页面?

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

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

+0

您可以添加一个http拦截器,根据错误代码检查答案并重定向到登录。你使用的角度是什么版本,因为API在最新版本中有所改变。另一个问题:当你错误时,你会得到什么http状态? 200或4xx? (这将决定你是否需要把你的拦截器放在成功或错误hanlder上) –

回答

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上,但这就是它看起来像你正在做的事情。希望有所帮助。