關於MVC許可權控制的一點小想法

2022-03-23 18:22:41 字數 1337 閱讀 4183

近來一直在學習mvc。

先檢討一下自己,本來一直在看wpf並向silverlight靠攏的,可xaml這個東西一時半會領會不了它的真諦,所以暫時先放下了。雖然mvc看的比較系統,但暫時閒置了wpf和silverlight還是有點沮喪感,覺得自己沒有堅持。

mvc的許可權控制一直是乙個麻煩事。

webform下的窗體身份驗證及角色許可權管理,我自己有一篇文章做了個總結:asp.net實現form認證的一些使用技巧。

對於mvc,我不喜歡它自帶的membership那一套,也不喜歡用linq,所以我著重參考了這篇文章:asp.net mvc:窗體身份驗證及角色許可權管理示例。文章的內容很好,將form認證和mvc很好的結合起來,而且角色許可權可控制到action的級別。

今天我在做自己寫的乙個簡單示例程式時發現,如果當我們的許可權管理比較粗狂時,比如,我只需要根據是否登入來判斷頁面是否需要訪問時,如果還是為每乙個controller下的每乙個action都增加屬性[authorize],那就太麻煩了。我在想能不能控制到controller級別呢?於是做了下面的嘗試:

1[authorize]

2public

class

accountcontroller : basecontroller

3即將屬性[authorize]寫到controller級別,發現是可用。這樣就控制了整個controller都需要認證後才能訪問。但是還是得為每乙個controller下都增加屬性[authorize],也有點麻煩。於是,我想到了webform下常會做乙個pagebase類,我又做了下面的嘗試:

1[authorize]

2public

class

basecontroller : controller35

6public

class

accountcontroller : basecontroller

7也就是建立乙個basecontroller基類,帶上[authorize]屬性,然後需要認證的controller都繼承這個基類即可。測試通過,那就ok了。今天工作差不多就能到這了。

但也有一些問題,比較普遍的就是在控制action的角色許可權時,需要寫死[authorize(roles = "manager")]。很多人在問,能不能那個角色能動態的從資料庫讀取呢?其實我也沒有辦法。包括以前webform認證時按角色控制目錄的訪問屬性,也需要在web.config中寫死。

不過,我有個想法,還沒實踐,那就是在basecontroller中增加相應的虛action或抽象action,在這一級定義好[authorize]屬性,或者進行動態的讀取,其餘的action重寫實現就可以了。不知道可不可行。有時間試一下。

今天暫時就這麼多,記一下,給自己也是個提醒。

關於MVC許可權控制的一點小想法

近來一直在學習mvc。先檢討一下自己,本來一直在看wpf並向silverlight靠攏的,可xaml這個東西一時半會領會不了它的真諦,所以暫時先放下了。雖然mvc看的比較系統,但暫時閒置了wpf和silverlight還是有點沮喪感,覺得自己沒有堅持。mvc的許可權控制一直是乙個麻煩事。webfor...

一點小想法

關於一點應用加速的心得 1.為了不影響使用者體驗,可以單獨開執行緒來完成費時的操作 thread thread new thread new runable public void run 寫在這裡 2.其實對於一些應用來說,可以把運算的結果儲存起來,下次直接讀取資料,這樣可以節約不少時間。3.盡量...

winform 關於ref一點小想法

今天逛 codeproject 時看到一種方法的寫法,嘿嘿,比較少見到,記一下。class o static void change ref o inputo 都知道類是引用型別,如果是直接傳遞進去乙個物件的話,其實只是傳引用,c 的說法就是乙個位址吧 是會傳遞出來的。即 static void c...