在我的MVC应用程序中,我想在cshtml文件中呈现一个表,如果当前登录用户是某个x人。我正在使用Windows身份验证,我在web.config文件中进行了以下更改。
<authentication mode="Windows">
</authentication>
当我尝试访问当前用户名时,在我的控制器中,我没有获得任何用户名。我正在尝试以下方法:
ViewBag.LogInUserName = Request.RequestContext.HttpContext.User.Identity.Name;
以上这条线路正在运行。但我现在不知道什么是错的。我现在也在IIS上托管了我的应用程序。
答案 0 :(得分:12)
您需要在控制器上放置[Authorize]
属性。
您可以在控制器中使用User.Identity.Name
。
[Authorize]
public class YourController : Controller
{
public ActionResult SomeAction()
{
var userName = User.Identity.Name;
}
}
答案 1 :(得分:12)
查看Web项目的属性,特别是:
默认情况下,这些设置与您可能正在寻找的相反。
(图片来自MSDN)
答案 2 :(得分:1)
有点晚了,但这可能在将来为其他人服务。
在将我的网站部署到新的IIS服务器后,我遇到了同样的问题,并且启用了匿名身份验证,因此请确保禁用匿名身份验证并且它应该可以正常运行。