在C#中使用MVC,我想編寫一個通用工具或類,其中如果某個特定條件失敗,需要重定向到登錄頁面。在會話檢查的某些情況下重定向到登錄頁面
例如:當用戶登錄到網站時,userid將被添加到會話中。要訪問「ManageUsers」頁面,用戶應該以管理員身份登錄,否則我需要重定向到登錄頁面。我還需要在其他一些類似的頁面中檢查這種情況。我不想在登錄時檢查用戶是admin還是普通用戶。我需要在普通課上檢查這個。
任何建議?
在C#中使用MVC,我想編寫一個通用工具或類,其中如果某個特定條件失敗,需要重定向到登錄頁面。在會話檢查的某些情況下重定向到登錄頁面
例如:當用戶登錄到網站時,userid將被添加到會話中。要訪問「ManageUsers」頁面,用戶應該以管理員身份登錄,否則我需要重定向到登錄頁面。我還需要在其他一些類似的頁面中檢查這種情況。我不想在登錄時檢查用戶是admin還是普通用戶。我需要在普通課上檢查這個。
任何建議?
其實我覺得這不是一個應用程序特別好行爲。我認爲你應該禁用(或隱藏)用戶無法執行的任何操作。在用戶手動輸入URL或從他們有權限使用書籤的情況下,顯示錯誤消息而不是重定向到登錄頁面。
想象一下,您是登錄到您的應用程序的用戶。你點擊一個用戶界面元素,它看起來像你已經註銷。你無法知道你不應該使用它。禁用/隱藏元素可以防止大多數用戶出現這種情況。重定向到錯誤會向用戶提供有價值的反饋,說明爲什麼他們採取的措施沒有達到預期的效果。
我使用派生自AuthorizeAttribute的自定義屬性來實現此效果。如果用戶未登錄,它將重定向到登錄頁面。如果他們已登錄,但沒有足夠的權限,則顯示適當的錯誤視圖。
這已經存在於ASP.NET MVC與授權屬性:
[Authorize(Roles="Administrators")]
public AcitonResult ManageUsers() {
return View();
}
或者
[Authorize(Users="Admin,SomeUser")]
public AcitonResult ManageUsers() {
return View();
}
[Authorize(Roles = "Admin")]
public ActionResult ManageUsersController()
{
...
}
在你的web.config檢查:
...
<forms loginUrl="~/your_login_page" defaultUrl="~/">
...
你也應該設置兩個的MembershipProvider和RoleProvider在你的web.config
我必須根據控制器和操作(即頁面)檢查普通類中的條件並將用戶重定向到登錄。 它不僅是基於角色的檢查。我也必須檢查一些更多的條件,如字符串平等檢查(UserName ==「Prasad」)。 – Prasad 2009-05-24 13:31:49