在asp.net動態數據站點上使用活動目錄角色實現安全性的最佳方式是什麼?如何使用動態數據和Active Directory實現基於角色的安全性?
我想限制某些視圖(和相關鏈接)到某些角色。 即用戶A可以只對表X和用戶B查看列表操作只能對數據表Y查看列表行動
在asp.net動態數據站點上使用活動目錄角色實現安全性的最佳方式是什麼?如何使用動態數據和Active Directory實現基於角色的安全性?
我想限制某些視圖(和相關鏈接)到某些角色。 即用戶A可以只對表X和用戶B查看列表操作只能對數據表Y查看列表行動
我有我的blog這裏的一個DynamicData Attribute Based Permission Solution using User Roles這裏 DynamicData: Database Based Permissions - Part 1這個了一些文章,我也必須在Securing Dynamic Data sample on codeplex alook它使用路由處理。
您可以只使用ASP.NET的Active Directory Memebrship &角色提供認證\授權用戶到應用程序。然後,您可以撥打Roles.IsUserInRole來查看AD角色成員資格,以便在呈現內容之前檢查用戶是相關組的一部分。
我在很多應用程序中都做了這個。
爲您的應用程序啓用了Windows身份驗證。
創建一些可以存儲用戶憑據的對象,並將該對象存儲在會話中以便快速回復。如果不在那裏,您可以快速重建它。我通常有每個角色設置爲字節例如:
enum USER_ROLE : int
{
Role1 = 1,
Role2 = 2,
Role3 = 4,
Role4 = 8,
etc
}
if (Context.User.IsInRole("Roll1Name")) YourUserObject.Roles += USER_ROLE.Role1;
if (Context.User.IsInRole("Roll2Name")) YourUserObject.Roles += USER_ROLE.Role2;
etc
然後隨時控制需要保證,我將它傳遞到接受一個HTMLLoader對象,並根據用戶的角色屬性和安全需求的功能該控制。
例如,布爾SetControlSecurity(HTMLControl時CTRL,INT iUserRoles,INT iControlRoles,ACTION反應的影響)
所以這樣做面板的一個示例可能是:
SetControlSecurity(pnlUserInfo,YourUserObject.Roles,eRole.Role2,ACTION.Hide);
我平時也有它參加一個參數去的動作類型像是躲進安全對不履行,只讀,清晰的數據,等等
相比在功能中的作用很簡單:
bool bHasAccess = ((iUserRole & iControlRoles) > 0);
if (bHasAcess)
{
// leave the control or make sure it is visible etc
}
else
{
// take action to secure the control based on the action
}
希望有幫助。