2010-04-01 113 views
3

我已經考慮看看asp.net成員,似乎提供了我所需要的一切,但我需要某種類型的自定義角色的功能。asp.net成員資格:擴展角色成員資格?

目前我可以添加用戶到一個角色,非常棒。

,但我也需要能夠將權限添加到角色..

角色:編輯 權限:在編輯表可以查看編輯器菜單,可以寫信給編輯表,可以刪除條目。

目前它不支持這個,其背後的想法是在我的程序中創建一個管理選項來創建一個角色,然後爲角色分配權限以表示「允許用戶查看應用程序的某個部分」,‘允許用戶打開我怎麼會實現這樣一個soemthing菜單項’

任何想法?

我相信一個自定義角色提供,但我想知道如果某種框架擴展已經存在,也沒有我自己的滾動?

或者任何人知道如何解決這個問題的一個很好的教程?

我什麼asp.net SQL提供商表等方面引發了不小快樂......但我想我需要通過添加名爲RolesPermissions

,然後我相信另一個表擴展這個:-)爲表中的每個有效權限添加某種枚舉?

在此先感謝

回答

1

可以通過編程允許還是不允許用戶看到一些網頁,還是使用比如函數IsInRole一些行動,並檢查是否出租或沒有用戶做一些行動。

HttpContext.Current.User.IsInRole("rolename") 

可以使類/或表格查看權限,取決於從用戶所屬的角色,打開,關閉,允許等很多想在同一頁上的。我在程序中編寫了一個這樣的想法,非常簡單。

這裏有一個想法...

public enum csPermissions 
{ 
    pActionDelete = 1, 
    pActionEdit = 2 , 
    ...more actions... 
} 

private int[] AdminPermission = { 
    (int)csPermissions.pActionEdit, 
    (int)csPermissions.pActionDelete, 
    .... 
}; 

private int[] BackOfficePermission = { 
    (int)csPermissions.pActionEdit, 
    .... 
}; 

public static bool IsThisAllowed(csPermissions AskPermitForThisAction) 
{ 
    ... questions here for all users roles... 
    ... here is only an example ..... 
    if (HttpContext.Current.User.IsInRole("Administator"))) 
    { 
     for (int i = 0; i < AdminPermission.Length; i++) 
      if (AdminPermission[i] == (int)AskPermitForThisAction) 
       return true; 
    } 

    ... 
    return false; 
} 

希望這有助於。