2012-07-17 49 views
1

我正在開發一種CRM系統,需要有一個安全機制而不是基於角色的安全機制。尋找數據驅動的安全框架.net

例如,系統中的某個用戶可以自己的客戶端view所有客戶端,update

因此,基於角色的安全性不會在這裏幫助,因爲所有的銷售員都具有相同的角色:sales_user_role

我需要通過在每一個客戶端具有加以區別:sales_owner_id

if(client.salesOwnerId.Equales(httpSession["user_id"]){ 
    delete... 
    update... 

} 
在上述情況下的

對象client是具有salesOwnerId的客戶端實體。
由於以上是意大利麪條代碼,我想在數據驅動的安全框架工作中做到這一點。

我正在使用C#.NET4,MVC3,WCF,Nhibernate和Spring進行依賴注入。

(我看到犀牛的安全性,做到這一點,但它不記錄,並有極少數的學習資源)

感謝

+0

你所描述的「所有者」的隱性作用,這每個用戶將擁有它們在數據庫中擁有的對象......需要根據所有權確定授權的對象需要提供某種「互動用戶是我的所有者」方法,無論是在服務中還是在服務中在BO中。 – 2012-07-17 12:39:03

+1

我可以爲犀牛安全擔保。閱讀單元測試,他們很容易理解。 – Henrik 2012-11-24 23:21:50

回答

0

您可能仍然能夠達到你想要用傳統的,基於角色的授權是什麼如RoleProvider

例如,你可以有作用,如:

ViewOwnClients 
ViewAllClients 
UpdateOwnClients 
UpdateAllClients 
DeleteOwnClients 
DeleteAllClients 

您仍然需要編寫代碼來測試所有者ID如:

if ((User.IsInRole("UpdateAllClients") || 
    (User.IsInRole("UpdateOwnClients") && client.OwnerId = currentUserId)) 
{ 
    ... 
}