gpt4 book ai didi

asp.net - 如何使用动态数据和 Active Directory 实现基于角色的安全性?

转载 作者:行者123 更新时间:2023-12-02 14:13:01 24 4
gpt4 key购买 nike

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

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

最佳答案

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

为您的应用程序启用 Windows 身份验证。

创建一些可以存储用户凭据的对象,并将该对象存储在 session 中以便快速检索。如果它不存在,您可以快速重建它。我通常将每个角色设置为一点,例如:


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
}

希望有帮助。

关于asp.net - 如何使用动态数据和 Active Directory 实现基于角色的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com