【问题标题】:ASP.NET How do you dynamically deny access to RoleASP.NET 如何动态拒绝对角色的访问
【发布时间】:2011-10-19 21:36:43
【问题描述】:

我最近开始尝试在我的 Web 应用程序中使用 ASP.NET 4 Membership 和 Role 提供程序。但是我在实施良好的安全方法时遇到了问题。

我知道使用 web.config 文件我们可以授予或拒绝对某些 aspx 文件的访问,但是在某些情况下是否有任何好的内置方法可以拒绝对指定角色的访问?

例如;

我们有一个名为“EditUser.aspx”的页面。

我们有两种用户类型;管理员和标准用户。此页面用于编辑这两种类型。但是,只有管理员才能编辑其他管理员。

阻止没有“管理员”角色的经过身份验证的用户通过 EditUser.aspx 编辑管理员的最佳方法是什么?

我希望比下面的更优雅一点:

if(editUser.IsInRole("admin") && !User.IsInRole("admin"))
{
    Respone.Redirect("SomeAccessDeniedPage.aspx");
}

谢谢,

菲尔

【问题讨论】:

  • @Maysam - 不,这不是一个类似的问题。我不希望动态添加角色。我希望能够允许访问 ASPX 页面,然后如果情况需要,可以在渲染期间撤销访问。请重新阅读我的问题。
  • 我不认为 ASP.NET 在这里可以为您做任何神奇的事情。如您所述,内置功能是确定(通过 web.config)用户是否可以一起访问页面。对于具有这种条件功能的业务逻辑,ASP.NET 无能为力。我假设您在 EditUser.aspx 上有一个用户列表,当有人选择管理员用户时,您执行上述逻辑。
  • @e36M3 - 是的,这就是我所害怕的。我自己在角色提供者中四处寻找,但什么也看不到。我想我会把它放在那里,以防我遗漏了一些明显的东西。不幸的是,我认为角色安全性只是为了满足我们的需求。我举的例子很简单,我们的系统会有更复杂的逻辑。
  • 明白了,但是我不确定从“框架”的角度来看可以做什么。除了“是的,您使用的是角色”或“不,您没有角色”之外,没有条件允许/拒绝 AFAIK。您在这里谈论的是业务规则,它们可以是无限的。

标签: c# asp.net security asp.net-membership roleprovider


【解决方案1】:

要考虑的一件事是将 LoginView 服务器控件与 RoleGroups 元素一起使用。也许将管理员用户绑定在一个单独的 gridview 中并将其包装在一个 LoginView 集中以仅显示给具有管理员角色的用户。

【讨论】:

  • 感谢您的反馈,但这不是问题所在。我没有在这个页面上列出用户,而是编辑一个特定的用户。使用 URL 路由数据中传递的键标识用户。我不得不开发自己的安全机制来拒绝访问该页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多