2013-10-21 48 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上,但這就是它看起來像你正在做的事情。希望有所幫助。