我使用Authorize屬性根據用戶角色過濾控制器操作,但是如果嘗試進行未經授權的操作,用戶將重定向回登錄頁面。就我的用戶而言,我會發現這種混亂和刺激。如何在ASP.NET MVC 2應用程序中顯示授權錯誤消息?
我該如何顯示一條錯誤消息來通知用戶他們需要某些角色,並保留在他們嘗試執行操作的視圖上?
我使用Authorize屬性根據用戶角色過濾控制器操作,但是如果嘗試進行未經授權的操作,用戶將重定向回登錄頁面。就我的用戶而言,我會發現這種混亂和刺激。如何在ASP.NET MVC 2應用程序中顯示授權錯誤消息?
我該如何顯示一條錯誤消息來通知用戶他們需要某些角色,並保留在他們嘗試執行操作的視圖上?
您需要編寫一個不返回HttpUnauthorizedResult
的自定義Authorize
屬性。同樣的觀點仍然是一個困難的任務,因爲你可能需要保持請求後的所有上下文。
我到目前爲止發現的解決方案是,您需要在_ViewStart(也許是MVC2中的其他內容)中保存當前頁面的會話,然後在您的自定義授權類中使用該會話重定向到頁面並顯示消息。
哎唷!我可能會返回一個自定義的HttpUnauthorizedResult,該HttpUnauthorizedResult路由到錯誤視圖,而不是登錄視圖,並將錯誤視圖上的ActionLink提供回起始視圖? – ProfK 2010-07-10 09:23:54
編寫一個cusom'Authorize'屬性比您想象的要容易得多,它是處理您的情況的最乾淨的方式,並且它在整個項目中也是可重用的。 – 2010-07-10 09:27:39
@Profk,如果你想被路由到一個錯誤視圖'Response.Redirect',或者在過濾器內返回'ViewResult'。 – 2010-07-10 09:41:04