Windows身份验证 - 获取当前用户名

Jas*_*ash 6 asp.net windows-authentication asp.net-mvc-3

在我的MVC应用程序中,我想在cshtml文件中呈现一个表,如果当前登录用户是某个x人.我正在使用Windows身份验证,我在web.config文件中进行了以下更改.

<authentication mode="Windows">
      </authentication>
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,当我尝试访问当前用户名时,我没有获得任何用户名.我正在尝试以下方法:

ViewBag.LogInUserName = Request.RequestContext.HttpContext.User.Identity.Name;
Run Code Online (Sandbox Code Playgroud)

以上这条线路正在运行.但我现在不知道什么是错的.我现在也在IIS上托管了我的应用程序.

jga*_*fin 12

您需要将[Authorize]属性放在控制器上.

您可以User.Identity.Name在控制器中使用.

[Authorize]
public class YourController : Controller
{

    public ActionResult SomeAction()
    {
        var userName = User.Identity.Name;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果删除 [Authorize],则 401.0 - 未经授权就会消失,您可以获得类似 System.Security.Principal.WindowsIdentity.GetCurrent().Name 的用户名 (2认同)

Ber*_*ern 12

看一下web项目的属性,特别是:

  1. 匿名身份验证 - 设置为"已禁用"
  2. Windows身份验证 - 设置为"已启用"

默认情况下,这些设置与您可能正在寻找的相反.

Web项目属性

(图片来自MSDN)