2012-01-26 155 views
2

我需要一些關於ASP.NET成員資格的說明;請幫助我。 我正在使用ASP.NET MCV 3框架並打算爲用戶使用ASP.NET成員身份&使用LDAP或SQL進行身份驗證管理。ASP.NET MVC成員角色

至於我瞭解到現在; ASP.NET成員是:

[用戶]有[作用]或[作用]有[用戶]

但在我的項目,我有一個更復雜的業務邏輯;我要在這個層次結構下一層像

[用戶]有[作用] - >有[任務]

這樣我就可以動態分配/取消任務/權限到我的MVC控制器或動作;

我計劃開始使用SQL提供程序的成員身份,並且可能會稍後轉爲使用LDAP/AD。

我也探討過AzMan和NetSqlAzMan;他們看起來可以解決這個錯誤,但他們的使用似乎很奇怪; (並不像ASP.NET成員那樣簡潔;我們可以簡單地使用註釋來將角色/任務分配給控制器或其動作。是有任何解決辦法

我可以享受ASP.NET成員的使用的簡單性和同一條路上,有一個角色下一級層次 - >任務 - >操作

任何幫助將是非常感謝。

謝謝!

回答

2

ASP.NET的成員資格提供者僅支持開箱即用的角色。它不支持任務或操作。但是,創建一個自定義角色提供程序來滿足任何需求相對比較容易。

首先查看「實施角色提供者」http://msdn.microsoft.com/en-us/library/ie/8fw7xh74.aspx。您還可以在http://msdn.microsoft.com/en-us/library/ie/tksy7hd7.aspx找到示例角色提供程序。

+0

謝謝;似乎很有用。我現在是否可以將此自定義角色提供者升級到下一級別並添加表/方法以滿足任務/操作?這聽起來正確嗎? –

+0

是的。這是正確的。你可以添加任何你需要的東西。 – Mark

2

ASP.NET成員資格只支持角色,沒有任務或操作。

您可以使用屬性來表示,其操作允許哪些角色,就像這樣:

[Authorize(Roles="Administrator")] 
public ViewResult Edit(int id) 
{ 
    return View("Edit"); 
} 

或者你的代碼可以用做IsInRole方法檢查:

if (User.IsInRole("Administrator")) 
{ 
    ... 
} 

祝你好運!