在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
}
希望有帮助。