很長時間以來,一直想總結一下自己在編制應用過程中的用戶、部門、角色、權限、模塊的關系模型,但是由於很多的原因一直沒有整理,現在我想仔細的整理一下,與大家交流。
一般簡單的角色模型為:用戶 -> 權限
最常用的角色模型為:用戶-〉角色-〉權限
我想現在大部分的軟件在使用:用戶-〉角色->權限
的關系模型。但是在我做OA這類應用的時候發現,僅僅是這么簡單的角色控制實在是太弱,經過長時間的改良,現在我使用的關系模型包括了用戶、部門、角色、權限、模塊這些內容,它們之間的關系如下:
這個角色關系比較復雜,圖中的箭頭指示的是隸屬關系,下面我分別介紹各部分的用途。
用戶 用戶可以隸屬於某一個部門,也可以隸屬於某一個角色。用戶的權限取決於自己直接指定的權限和她隸屬的部門、角色所擁有的權限。 用戶-〉部門:1對1 用戶-〉角色:1對多
部門 部門屬於一個特殊類型,它不光指定某個用戶屬於哪個部門,它還有自包含的特性。例如:A部門隸屬於B部門,這時候A部門會自動繼承B部門所有的權限。 部門-〉部門:1對1
角色 角色也屬於一個特殊類型,他也有自包含的特性。例如:C角色隸屬於D角色,則C角色自動繼承D角色的權限。 角色-〉角色:一對多
權限 權限屬於最底層的內容,前面所說的用戶、部門、角色都是圍繞權限來設計的。 權限-〉用戶:一對多 權限-〉角色:一對多 權限-〉部門:一對多
模塊 如果開發的軟件具有自定義模塊或者是模塊式的,這部分就有用了。這個可以根據權限取得用戶可以使用的模塊列表。 模塊-〉權限:一對多
大致把我使用的角色模型說一下,當然這里面的權限都是以授權為准的,我還想在里面加上權限的禁止。但是一直沒有這塊的應用需求,所以也沒有想過。大家如果有興趣可以一塊想想。 |