摘要:[MVC學習心得]如何自訂Authorize
在MVC的 Action方法可以冠上Authorize的Attribute,並可以指定授權角色,來驗證使用者是否有權限執行 如:[Authorize(Roles="Admin")]
但若要動態指定Roles時,則會出現訊息 "錯誤 2 屬性引數必須是常數運算式、typeof 運算式或屬性參數型別的陣列建立運算式"
程式如下:
[Authorize(Roles=staticClass.GetCurrentRole())]
Ps:staticClass.GetCurrentRole()),此方法是在依照DB的資料來指定權限。
若想依照DB的資料來判斷權限,可以參考如下
1.新增一類別並繼承AuthorizeAttribute 並新增一自訂屬性PrgNo












2.覆寫AuthorizeCore方法


































3.在Action冠上自訂的AuthorizeAttribute






大功告成這樣就可以明確的指定Action對應到程式編號可以有哪些角色可以使用
範例檔案
MyCustomAuthorizeAttribute.zip
MDSN
http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/9b646099-67d8-4e42-b7b9-e2ba66e5a40d
參考文章
http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/