我的目標是如果用戶點擊他所在的頁面鏈接(或張貼表單),將彈出一個模式窗口未授權的,因爲它比重定向到通用錯誤頁面更好的用戶體驗。當未經授權導航到頁面時,大多數不冒險的方式使模式窗口彈出
我所做的就是實現
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
// ...
}
,這樣,如果該請求是一個非AJAX請求,然後將其重定向到同一個頁面(給住在同一頁上的錯覺),並追加查詢字符串與"forbiddenRedirect=true"
然後JavaScript打開錯誤模式。我試圖想出一個比使用查詢字符串更好的方法。據我所知,JavaScript無法訪問響應頭文件,只能訪問URL。這就是爲什麼我使用查詢字符串解決方案。但也許在MVC中,我可以通過某種方式重定向並傳遞基本控制器可以識別的某種令牌,然後將其添加到查看包中,如ViewBag.IsRedirectFromUnauthorizedAction = true
。
有什麼建議嗎?