2012-02-21 72 views
3

是否有任何預先存在的解決方案可擴展內置的SQL成員資格提供程序& .NET中的Sql角色提供程序具有組成員資格。分組角色並將用戶分配到組(ASP.NET角色提供程序)

現在的角色關係看起來像

Users ====> UserRoles <=====Roles 

我想延長那看起來像

Users ====> UserGroups <==== Groups ====> GroupRoles <==== Roles. 

比方說,你必須在它30個或40不同角色的應用程序。每當新員工加入公司時,您必須記住部門通常會獲得哪些角色&,然後確保在設置其網站帳戶時勾選這8個複選框。

如果您有組織概念,可以爲每個部門設置一個「組」,作爲部門員工通常獲得的角色的邏輯分組。然後,您可以將新員工添加到單個組。

是否有任何現成可用的實現已經可以節省我寫我自己的?

+0

我假設你想要的模型基本上就像[我的這裏](http://stackoverflow.com/questions/5518746/how-to-join-with-linq-to-typed-dataset),不是嗎?我的'角色'只是一個用戶組,這個權限由'AccessRule'控制。 – 2012-02-21 12:10:25

+0

確實如此。你有一點點不同我想在用戶和角色之間添加一個「組」,你已經創建了角色==組,並且增加了AccessRules,但是這個概念看起來基本相同。 我想以另一種方式來做這件事的唯一原因是能夠仍然利用像IsInRole()等內置的提供者方法。 – 2012-02-21 12:27:27

+0

我的方法的優點是你不需要實現一個自定義的'角色提供者「,因爲它使它看起來不受影響。 ASP.NET不需要知道我在另一端增強了它。我也實現了一個模板函數,通過使用另一個角色作爲模板來創建新的角色。這是另一個「角色」(或你的默認角色)的「AccessRules」列表。我不需要使用'IsInRole'來檢查授權。我已經實現了自己的'hasAccess'方法來檢查用戶是否屬於具有給定'AccessRule'的角色(f.e。DeleteXY)。 – 2012-02-21 12:41:47

回答

3

我假設你想要的模型基本上就像mine here,不是嗎?我的角色只是一個用戶組,其授權受AccessRule控制。

enter image description here

我的做法有,你並不需要實現自定義RoleProvider可言,因爲它保持它顯然觸及了優勢。 ASP.NET不需要知道我在另一端增強了它。我也實現了一個模板函數,通過使用另一個角色作爲模板來創建新的角色。這是其他Role(或您的默認角色)的AccessRules的列表。我不需要使用IsInRole來檢查授權。我實現了我自己的hasAccess方法,用於檢查用戶是否屬於具有給定AccessRule(f.e. DeleteXY)的角色。