2010-10-26 61 views
1

我想知道是否有人能夠幫助我處理以下問題?授權Web應用程序用戶對用戶信息以及角色

我需要一些更復雜的webapp授權規則,而不僅僅是角色,我工作得很好。 「允許所有管理員允許買家,只要他們具有正確的部門標識並被允許查看該客戶的憑證」即可。

我正在使用自定義標識和自定義主體來存儲信息,例如用戶是否被允許查看所有客戶端或他們可能會看到哪些客戶端。該信息從數據庫中檢索並在創建身份/主體時添加。

我已經創建了一個擴展IPermission,ISecurityEncodable的自定義權限。在此,我已經修改了點播()函數如下:

public void Demand() 
    { 
     this._identity = (UserIdentity)Thread.CurrentPrincipal.Identity; 
     if (Thread.CurrentPrincipal.IsInRole("Admin")) { } 
     else if ((Thread.CurrentPrincipal.IsInRole("Buyer")) && 
       (this._identity.CanViewAllClients) && 
       (this._identity.IsInDept(this._departmentID))) { } 
     else if ((Thread.CurrentPrincipal.IsInRole("Buyer")) && 
       (this._identity.CanViewClient(this._requestedClient)) && 
       (this._identity.IsInDept(this._departmentID))) { } 
     else { throw new SecurityException("Custom Permission Denied"); } 
    } 

然後我把這個當我想用

CustomPermission custperm = new CustomPermission(requestedClient, reqClientDept); 
custperm.Demand(); 

這正常授權,但似乎一片狼藉,哈克做事的方式。特別是因爲將我的安全角色用作屬性是很好的,例如

[PrincipalPermission(SecurityAction.Demand, Authenticated = true)] 
public class... 

也許有一種方法叫[CustomPrincipalPermission(SecurityAction.Demand,授權= TRUE)]用自定義IsAuthorised檢查?這可能嗎?需要執行什麼?

我很抱歉如果有一個簡單的解決方案,我錯過了在線,但放心,我一直在檢查幾天。

回答

0

看起來你想要的是聲明性而非程序性需求。爲此,您需要根據您的​​創建一個CustomPermissionAttribute

有一個自定義權限here的聲明性請求示例以及創建自定義權限屬性here的詳細信息。

相關問題