获取ASP.NET MVC登录用户的用户名
获取ASP.NET MVC登录用户的用户名
我想获取登录用户名和域的用户名。
我用以下代码来获取它:
User.Identity.GetUserId()
在我的web.config中是这样的:
目前,我只得到一个空字符串。我需要改变什么来获取Windows用户名信息?
其他人的注意事项:
在我的研究中,我还找到了以下内容:
Environment.UserDomainName + @"\" + Environment.UserName
根据这个链接,它只提供线程正在运行的身份,而不是Windows的信息。
编辑1:我目前正在调试模式下测试我的程序。
原因:
- 使用HttpContext.User.Identity.Name获取用户名时返回空字符串。
- 出现HTTP Error 404.15错误,提示查询字符串过长。
解决方法:
- 确保在web.config文件的system.web节点中有授权标签,并设置为允许匿名用户访问。
- 在IIS中禁用匿名身份验证,启用Windows身份验证。
- 确保没有在任何操作上使用[AllowAnonymous]属性。
代码示例:
// 获取当前登录用户的用户名 var username = HttpContext.User.Identity.Name;
参考链接:
- [stackoverflow.com/questions/11636386](http://stackoverflow.com/questions/11636386)
- [stackoverflow.com/questions/28483745](http://stackoverflow.com/questions/28483745)
在ASP.NET MVC中获取登录用户的用户名有多种方法,但有时在使用User.Identity.GetUserId()
方法时会出现问题,这是因为User.Identity.GetUserId()
是Microsoft.AspNet.Identity
命名空间中的扩展方法,而该命名空间与Windows身份验证不兼容。一般来说,在Windows身份验证中,User.Identity.Name
的值的格式为{DOMAIN}\{USER}
,所以如果需要获取域名和/或用户名,可以将该字符串按\
进行分割,然后取出所需部分。
而在使用Identity认证时,User.Identity.Name
应该是ApplicationUser.UserName
的值,但根据具体的设置,它也可能是ApplicationUser.Email
的值。
因此,如果需要获取登录用户的用户名,可以根据具体的身份验证方式选择合适的方法来获取。