2013-12-23 28 views
3

我想你的幫助,以建立一個安全的環境,一個覺得相當複雜,我想知道如果我只能用彈簧層次的角色系統甚至春天ACL ...春季安全層次的角色系統

我需要建有很多角色的安全環境,例如:

  • LVL 1 - (第1組,第2組...)
  • 拉特2 - (1公司,公司2 ...)
  • lvl 3 - (功能1,功能2 ...)
  • LVL 4 - (方法1,方法2 ...)
  • LVL N - (N)

管理用戶將創建一個與例如動態角色的用戶:

用戶1具有=組1>公司1> FUNC 1,FUNC 2>方法1
用戶2具有=組2>公司1,公司2> FUNC 3>方法1,方法2

該結構可以容易地生長到甚至特別詳細我害怕管理所有這些事情。

任何想法如何解決它與春季安全?

回答

2

如果它真的是動態的,那麼Spring Security ACLs是一個很好的方法。對於每個組,公司,func,方法等在表ACL_SID中創建授予的權限。

然後爲每個用戶在主體標誌設置爲true時在ACL_SID中創建一個條目。

對於要保護的系統中的每個域對象,請在ACL_OBJECT_IDENTITY中創建一個ACL,並通過在ACL_ENTRY中插入行來授予正確的權限。

有可能同時插入發放和ACL_ENTRY撤銷條目和順序問題這意味着它可能撤銷一組在0線接入,並且將優先補助金1號線。

ACL訪問控制列表也可以在層次結構中編寫,並且可以設置爲從父類繼承或不從父類繼承。

通常,只要基於角色的訪問解決方案不能爲給定用例提供足夠的靈活性,就會使用ACL。

+0

這是一個非常好的方式去,謝謝清除我的頭腦=) 所以基本上我可以把@PreAuthorize放在系統和jstl的jsp中來控制用戶訪問。 謝謝 –

+0

我有一個類似的設置,我想知道如何在您提到動態角色時實現角色層次結構(針對每個組,公司,func,方法等在表ACL_SID中創建授予的權限。) –