2014-04-07 35 views
1

我們有一個帶有MVC後端的Angular JS應用程序,它使用WIF對使用Azure ASC的用戶進行身份驗證。 MVC控制器具有[Authorize]屬性,因此當未經身份驗證的用戶嘗試訪問需要身份驗證的頁面時,他們將收到401錯誤。Internet Explorer在註銷時不會重定向到未經授權的頁面

所以過程如下:

  1. 試圖訪問Home/Index
  2. 接收401錯誤
  3. 角httpInterceptor在401拾取並使用$ location.path重定向到未經授權(登錄)頁面( 「/未授權」);
  4. 用戶單擊登錄按鈕並重定向到Azure ACS進行身份驗證。
  5. 成功驗證後,用戶通過身份驗證令牌返回到站點,並且可以訪問受保護的資源。

角httpInterceptor:

 // On response failture 
     responseError: function (rejection) 
     { 
      // console.log(rejection); // Contains the data about the error. 
      if (rejection.status == 401) 
      { 
       $location.path("/unauthorized"); 
       return $q.when(rejection); 
      } 
      // Return the promise rejection. 
      return $q.reject(rejection); 
     } 

當我第一次加載頁面的所有瀏覽器的行爲預期。

我退出時出現問題。除IE之外的所有瀏覽器發生以下情況

  1. 通過重定向到註銷URL執行單一註銷。
  2. 登出後重定向到默認頁面,但因爲我現在已經沒有身份驗證令牌我用IE 401時收到一個401
  3. 我重定向到未經授權(登錄)頁面

然而在上面的步驟2中不會發生。因此,登出發生,但加載默認頁面。角腳本加載沒有因爲我加載所有的角控制器,服務和指示下面的剃刀語句中:

@if (User.Identity.IsAuthenticated) 
{ 
    //load angular files here 
} 

當我看到的是與小提琴家發生的事情,我可以看到的是,401不會發生與IE http://i.imgur.com/Of53mEY.png

,但它與其他瀏覽器的功能:

http://i.imgur.com/g1GmVw3.png

爲什麼沒有401發生在IE瀏覽器像其他瀏覽器?

回答

0

我能夠通過移動下面的語句之外的一些角度文件來解決這個問題。

@if (User.Identity.IsAuthenticated) 
{ 
    //load angular files here 
} 

不知道爲什麼IE需要這些之前,重新直接而不是其他瀏覽器。

相關問題