緣起
承繼前兩篇,從第一篇的【願景】,與第二篇的【樹狀結構畫面維護】,這一篇來談談如何處理角色的部分。角色的意義,請參考小喵第一篇【ASP.NET進階權限控管-Part 1 願景】裡面的說明,這裡就不再贅述了。直接進入到角色的定義、以及角色←→使用者之間的關係如何維護。
先從角色的定義來談起,先看一下角色的欄位說明
緣起
承繼前兩篇,從第一篇的【願景】,與第二篇的【樹狀結構畫面維護】,這一篇來談談如何處理角色的部分。角色的意義,請參考小喵第一篇【ASP.NET進階權限控管-Part 1 願景】裡面的說明,這裡就不再贅述了。直接進入到角色的定義、以及角色←→使用者之間的關係如何維護。
先從角色的定義來談起,先看一下角色的欄位說明
Role
RoleUser
維護畫面設計
角色維護
再來是設計角色的維護畫面、以及角色←→使用者的維護畫面。角色維護畫面其實還蠻簡單的,一個GridView配合一個DetailView就完成了,這部分的程式碼就不再浪費版面。類似以下的畫面,在撰寫的時候要注意,一旦修改或者刪除角色,必須同步的去修改刪除相關的資料表RoleUse(角色使用者設定),MenuP(畫面權限設定)。
而角色使用者的維護,這個部分比較有趣了。因為一個人可能擔任數個角色;同樣的,一個角色可能有多人擔任。因此會有兩個方向的維護:
- 使用者→角色
- 角色→使用者
使用者→角色
小喵把使用者→角色的部分,跟使用者維護放在一起,這樣操作起來比較直觀,就是設定某個人的個人資料,並且設定該人擔任哪些角色,請看畫面如下:
這個部分程式上也沒有太大的困難,在使用者設定歸屬角色時,會用到一個技巧【物件導向的購物車(動態新增移除輸入資料) 】不同的是不需要使用Session來記錄,可以改以ViewState處理即可。使用ViewState記錄物件,必須要序列化,這也只需要在設定物件的時候,多宣告成可序列化即可。這裡物件宣告的部分,小喵把他列在下面
<Serializable()> Public Class UserRole
Dim mRoleId As String
Dim mRoleDesc As String
Public Property RoleId() As String
Get
Return mRoleId
End Get
Set(ByVal value As String)
mRoleId = value
End Set
End Property
Public Property RoleDesc() As String
Get
Return mRoleDesc
End Get
Set(ByVal value As String)
mRoleDesc = value
End Set
End Property
End Class
以上的Class不必獨立撰寫,直接寫再使用者維護的aspx.vb裡面即可(一個檔案可以有數個Class)
角色→使用者
接著設計另一個方向:角色→使用者。也就是某個角色,設定哪些使用者擔任這個角色。先看一下畫面如下
這部分的設計,方法是衍生自物件導向式資料庫的方式,在畫面上用兩個物件及兩個物件集合即可做到。相關方法請參考小喵在小舖裡發表的一篇文章【ASP.NET 左右ListBox項目動態轉移範例】。一樣的並不需要用到Session,只要用ViewState即可。使用ViewState記得要把物件宣告成可序列化。
有了使用者、角色、畫面之後,接著下一篇【ASP.NET進階權限控管-Part 4 【畫面】與【角色/使用者】權限結合】將開始介紹如何設定授權。
^_^
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |