如何使用Dynamic Data和Active Directory实现基于角色的安全性?

3

如何在asp.net动态数据网站上使用活动目录角色实现安全性?

我想将某些视图(及其相关链接)限制为特定的角色。例如,用户A只能查看表x的列表操作,而用户B只能查看表y的列表操作。

3个回答

2

我在许多应用程序中都做过这个。

为您的应用程序启用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和基于用户角色和该控件的安全要求的属性。

例如: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
}

希望这能有所帮助。

1

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接