ASP.NET MVC如何获得允许的用户?在Windows身份验证中

tes*_*der 3 c# asp.net asp.net-mvc web-config windows-authentication

我有网络配置:

<location allowOverride="true" path="Admin/Secure">
    <system.web>
      <authorization>
        <allow users="SpecificUserName1" />
        <allow users="SpecificUserName2" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

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

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

现在我使用默认方法:

@if (Request.IsAuthenticated)
{
 //secure menu
}
Run Code Online (Sandbox Code Playgroud)

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

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

UPDATE

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

UrlAuthorizationModule.CheckUrlAccessForPrincipal(Request.Url.AbsolutePath, HttpContext.Current.User, HttpContext.Current.Request.HttpMethod);
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 7

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

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

[Authorize(Users = "SpecificUserName1, SpecificUserName2")]
public ActionResult Secure()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

  • Authorize属性与Forms Authentcation无关.它非常适用于Windows身份验证.你的评论是完全错误的.**从不**,我再说一遍,**从不**使用web.config来控制ASP.NET MVC应用程序中的授权.无论您使用哪种身份验证方案 - Windows或Forms或自定义.有一天,有人更改了Global.asax中的路由模式并忘记更新web.config中location元素的路径,您的网站向所有人开放:-) (2认同)