3

我有网络配置:

<location allowOverride="true" path="Admin/Secure">
    <system.web>
      <authorization>
        <allow users="SpecificUserName1" />
        <allow users="SpecificUserName2" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>

我需要在运行时获取所有用户(SpecificUserName1,SpecificUserName2)。我怎样才能做到这一点?

更新我需要在视图中执行此操作

现在我使用默认方法:

@if (Request.IsAuthenticated)
{
 //secure menu
}

现在: 为域中的所有用户显示菜单,但仅授予 web.config 中存在的用户访问权限

需要: 隐藏菜单/允许域中的所有用户访问,除了 web.config 中存在的用户

更新

我找到了解决方案 http://forums.asp.net/t/1787320.aspx/1

UrlAuthorizationModule.CheckUrlAccessForPrincipal(Request.Url.AbsolutePath, HttpContext.Current.User, HttpContext.Current.Request.HttpMethod);
4

1 回答 1

7

首先,不要web.config用于控制 ASP.NET MVC 应用程序中的授权

使用[Authorize]属性。用它装饰相应的控制器/动作:

[Authorize(Users = "SpecificUserName1, SpecificUserName2")]
public ActionResult Secure()
{
    ...
}

然后,您可以将这些用户名外部化为常量并重用该值。顺便说一句,根据您需要这些值的确切位置,可能还有其他方法可以检索它们。

于 2012-10-15T12:14:27.333 回答