在asp.net动态数据站点上使用活动目录角色实现安全性的最佳方法是什么?

我想将某些观点(以及相关链接)限制为某些角色。 即,用户A只能查看表x的列表操作,而用户B只能查看表y的列表操作

有帮助吗?

其他提示

我在许多应用程序中都这样做了。

为您的应用程序启用了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

然后,只要需要保护控件,我就会将其传递给一个函数,该函数根据用户的角色和该控件的安全要求获取HtmlControl和属性。

EG。 bool SetControlSecurity(HtmlControl ctrl,int iUserRoles,int iControlRoles,ACTION eAction)

所以做一个面板的例子可能是:

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
}

希望有所帮助。

您可以使用ASP.NET Active Directory Memebrship&角色提供程序对应用程序的用户进行身份验证\授权。然后,您可以在任何地方调用 Roles.IsUserInRole 对于AD角色成员资格,在呈现内容之前检查用户是相关组的一部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top