?? security2.apt
字號:
---
權限管理
---
Lingo
---
2007-05-29
關于用戶權限管理的問題,有了一些自己的想法
*部門概念
無論是springside-1.0中的user - role - authority - resource四層結構,還是springside-2.0中的user - role - resource三層結構,都是演示了無部門的權限模型。
而在實際應用中,比如趙杰的DMIS,成都EAI和極品OA中,使用了添加了部門的權限模型,就是說在user - role - resource中又增加了dept的部分,這樣做的好處是,不同部門可以使用相同名稱的角色,在設置角色權限的時候,根據部門分別授權,而用戶登陸之后,根據本身處在的不同部門,就可以被授予不同的權限。
這種權限模型的最大好處是,當員工發生平級調動的時候,比如技術部的普通員工,調動到客戶服務部之后, 因為角色名都是普通員工,只需要改動此員工的部門,不需要對他的權限設置再進行處理,就可以讓他使用新工作崗位的功能權限。
但問題是,模型增加了一個dept,卻大大的增加了模型的復雜程度,原本role - resource之間的多對多關系,變成了role - dept - resource三者之間的網狀多對多對多的關系,role與dept結合之后,才能唯一決定使用的權限。如果把角色設置為,軟件部項目經理,硬件部項目經理,感覺也是怪怪的,所以說也是應該讓部門與角色結合,這樣就可以使用諸如“項目經理”這種同名角色,在使用角度上來說是更便利了。但害怕出現與部門鎖定的情況,影響跨部門角色的設置與使用。
想到一個可能實現的解決方法,那就是讓dept僅僅與role關聯,我們在顯示頁面中看到的是一個角色名,而實際上數據庫中保存著多個角色列表,這些角色列表分別對應每個部門,這樣就達到role與resource單獨管理,免得加入dept的關系,讓數據模型變得更加復雜。現在感覺這樣的設置方式,可以達到不增加程序模型的復雜度,同時可以提升用戶體驗的作用,只不過在設置role的時候,還需要多考慮一下具體的細節問題,比如默認的角色應該是可以在所有部門下使用的(不屬于任何一個部門,只是一種缺省情況下的考慮。),增加一個特定部門的角色,就應該覆蓋掉默認的角色權限。這個時候再給用戶分配角色的時候,如何選擇特定的角色,角色分配權限的時候。這些時候就要在界面易用性上下工夫了。
現在對如何實現這樣的模型完全沒有思路。而且角色權限的時候,很可能要根據部門把一個角色的權限分配多次,這樣是不是也讓管理人員的工作量提高了呢?而且不知道實際中這樣的是不是真正給工作帶來便利。所以有待進一步的研究啊。
假想使用部門概念的情況:公司中人員的技術能力差別不顯著,不同部門的員工可以隨意變動,而且不同部門中的員工職務名稱也是類似的,技術部的一般員工,高級員工,經理,客戶服務部的一般員工,高級員工,經理。而且每個員工通常只分配一種角色,這樣對角色進行統一管理的時候,以及平級調動的時候就顯得很方便。
*職務問題
在公司中,人員都會有自己的職務分屬,也是根據職務來決定自己負責的工作與權限。但系統中常常使用角色role來代替職務來發生作用,約束人員的權限。能不能在系統中使用職務來代替角色呢?我認為是不可以的。
第一,人員的權限可能會頻繁發生變動,而職務的變動可能與權限的變動相比,則穩定得多。比如經常發生在繁忙的時候一個人身兼數職的情況,而在相對清閑的時候,他又會繼續去做自己的本職工作。為了解決這種情況,我們就需要抽象出粒度更細的角色,來負責動態分配用戶可能經常改變的權限。
第二,職務是一種樹狀結構,而角色更趨向于扁平結構。實際中,職務上嚴格區分上下級關系的,似乎更能體現出不同用戶的權限大小,而角色可以當作是一組權限的集合,角色之間沒有必然的上下級關系,僅僅是用來簡化操作,便于理解的一種手段。從這個角度上來說,扁平式的角色更利于程序實現。
第三,職務是來自現實工作中的,一種模糊的稱謂,是一種感性的認識,更利于人們的記憶和瀏覽。而角色是為了程序的數學模型,而抽象出來的,更精確的表示功能集合的一個理性概念,更利于邏輯實現。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -