1
我們有一個帶有MVC後端的Angular JS應用程序,它使用WIF對使用Azure ASC的用戶進行身份驗證。 MVC控制器具有[Authorize]
屬性,因此當未經身份驗證的用戶嘗試訪問需要身份驗證的頁面時,他們將收到401錯誤。Internet Explorer在註銷時不會重定向到未經授權的頁面
所以過程如下:
- 試圖訪問
Home/Index
- 接收401錯誤
- 角httpInterceptor在401拾取並使用$ location.path重定向到未經授權(登錄)頁面( 「/未授權」);
- 用戶單擊登錄按鈕並重定向到Azure ACS進行身份驗證。
- 成功驗證後,用戶通過身份驗證令牌返回到站點,並且可以訪問受保護的資源。
角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之外的所有瀏覽器發生以下情況
- 通過重定向到註銷URL執行單一註銷。
- 登出後重定向到默認頁面,但因爲我現在已經沒有身份驗證令牌我用IE 401時收到一個401
- 我重定向到未經授權(登錄)頁面
然而在上面的步驟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瀏覽器像其他瀏覽器?