2011-10-20 57 views
0

我有一個MVC2網站,現在允許通過Windows身份驗證訪問它,並使用ASP.net角色提供商提供授權。我試圖想出一種方式讓網站允許用戶訪問該網站,如果他的用戶名是某些組的成員,那麼我不必在sql中註冊用戶,但只需註冊一個訪問組。任何人有任何想法如何做到這一點?有一種快速和骯髒的方式?到目前爲止,在我的互聯網祕訣中,我還沒有找到一個快速和骯髒的方法來做到這一點?任何幫助都會很棒。允許訪問使用Windows身份驗證的MVC網站通過用戶名組通過用戶組

由於

+0

所以你試圖融合窗口和窗體身份驗證? – MarkKGreenway

+0

不,我有Windows認證,並希望保持這種方式。我只是想知道是否有方法檢查用戶組,如果他是該組的成員,那麼他可以訪問該網站。 – SoftwareSavant

回答

0

仰視角色/組信息用於用戶

ASP.NET提供了一個有用的「角色管理」的能力,它允許開發者的用戶映射到然後可以使用的邏輯「角色」以更好地控制最終用戶功能和授權訪問。例如,作爲開發人員,我可以爲我的Web應用程序創建一個名爲「managers」的角色,然後將訪問部分網站的權限限制爲「managers」角色中的用戶(注意:我將在其中發佈其他食譜將來討論如何充分使用角色管理授權和功能特性)。

使用Windows身份驗證時,ASP.NET允許開發人員創建並填充來自多個來源的角色。例如,開發人員可以設置內置的ASP.NET 2.0 SqlRoleProvider,將Windows用戶映射到存儲在數據庫中的自定義應用程序角色。這種方法對於可能存在特定於應用程序的角色映射的情況非常有用,這些映射對於推入集中式Active Directory樹/存儲來說沒有意義。

ASP.NET還可以很容易地從應用程序中訪問中央Windows和Active Directory組映射。例如,如果Active Directory網絡上有一個名爲「DOMAIN \ managers」的Windows組,則ASP.NET應用程序可以通過編寫如下代碼來查找當前訪問ASP.NET站點的Windows身份驗證用戶是否屬於該組:

If User.IsInRole("DOMAIN\managers") Then 
    Label1.Text = User.Identity.Name & " is a manager" 
Else 
    Label1.Text = User.Identity.Name & " is not a manager" 
End If 

注意,角色/組查找通過「User.IsInRole(角色名)」,也就是User.Identity.Name屬性的對等方法來完成。

SRC http://weblogs.asp.net/scottgu/archive/2006/07/12/Recipe_3A00_-Enabling-Windows-Authentication-within-an-Intranet-ASP.NET-Web-application.aspx

相關問題