我想弄清楚为什么HttpContext.User.Identity.Name
会返回空白。
代码
public ActionResult Test()
{
string username = HttpContext.User.Identity.Name;
return Content(username);
}
我是否在错误的环境中使用它?我想获取用户的用户名。
的Web.Config
<authentication mode="Windows" />
IIS
我启用了匿名,没有其他任何内容被检查。我正在运行IIS 6.0。
我是否需要添加任何类型的信息以帮助解决这个问题?我很困惑。我查了一下:http://stackoverflow.com/questions/1056487/httpcontext-current-user-identity-name-is-always-string-empty
但我是否需要设置一个Cookie才能使其正常工作?
答案 0 :(得分:3)
IsAuthenticated返回false,因此Identity.Name返回空字符串,因为您没有要求对该操作进行身份验证。您必须启用Windows身份验证并要求对操作进行身份验证。尝试通过使用[Authorize]
属性进行装饰来要求用户获得操作的授权 - 这将启动身份验证协商。
[Authorize]
public ActionResult Test()
{
if(Request.IsAuthenticated)
{
string username = HttpContext.User.Identity.Name;
return Content(username);
}
else
{
return Content("User is not authenticated");
}
}
答案 1 :(得分:2)
我启用了匿名,没有其他任何内容被检查。我正在运行IIS 6.0。
这意味着系统不会提示您登录,因此User.Identity.IsAuthenticated
将为false,User.Identity.Name
将为空。
取消选中匿名身份验证并检查Windows身份验证。
答案 2 :(得分:2)
如果其他人遇到此问题,请验证&#34;加载用户个人资料&#34;选项设置为 true 。转到IIS应用程序池。从列表中选择您的应用程序池。单击“高级设置”并向下滚动到“处理模型”部分。
这解决了我的问题。
答案 3 :(得分:0)
如果您使用的是FormsAuthentication.SetAuthCookie 那么你需要添加
<authentication mode="Forms" />
到
<System.Web>
在Web.config文件中。 来自here
的解决方案