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

时间:2012-01-23 07:12:16

标签: asp.net asp.net-mvc-3 windows-authentication

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

<authentication mode="Windows">
      </authentication>

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

ViewBag.LogInUserName = Request.RequestContext.HttpContext.User.Identity.Name;

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

3 个答案:

答案 0 :(得分:12)

您需要在控制器上放置[Authorize]属性。

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

[Authorize]
public class YourController : Controller
{

    public ActionResult SomeAction()
    {
        var userName = User.Identity.Name;
    }
}

答案 1 :(得分:12)

查看Web项目的属性,特别是:

  1. 匿名身份验证 - 设置为“已禁用”
  2. Windows身份验证 - 设置为“已启用”
  3. 默认情况下,这些设置与您可能正在寻找的相反。

    Web project properties

    (图片来自MSDN

答案 2 :(得分:1)

有点晚了,但这可能在将来为其他人服务。

在将我的网站部署到新的IIS服务器后,我遇到了同样的问题,并且启用了匿名身份验证,因此请确保禁用匿名身份验证并且它应该可以正常运行。