什么是C#和MVC中的System.Environment.Username和User.Identity.Name之间的区别?

时间:2015-11-12 07:03:05

标签: c# asp.net-mvc

我在MVC编程环境中工作我遇到了上述疑问,同时正在进行身份验证过程网站?

2 个答案:

答案 0 :(得分:1)

System.Environment.Username会为您提供运行该进程的当前登录用户的用户名 - 它与在命令提示符下键入SET并查看%USERNAME%环境变量相同。在Web托管环境中,它可能是运行IIS应用程序池的某个应用程序帐户。在某些情况下,例如当您在启用域的网络中使用Windows身份验证并使用Windows身份验证时,您已启用身份模拟,然后System.Environment.Username 可能为您提供访问您网站的用户的名称,但仅限于特定情况。

但是,

User.Identity.Name会为您提供在您的网站中进行过身份验证的用户的名称。如果您使用的是Windows身份验证,则它将是Windows用户名。如果您正在使用基本身份验证,则它将是在登录框中键入的用户名。如果您正在使用任何其他身份验证方案(标准或自定义),即使用ASP.NET身份验证框架,您将获得登录的用户名。这就是推荐获取当前用户名的方法 - 不是System.Environment,而不是System.Security.Principal.WindowsIdentity.GetCurrent - 只是User.Identity

答案 1 :(得分:1)

System.Environment.Username

当前登录的Windows用户名。

User.Identity.Name

用于验证网站身份的用户名。如果您使用windows身份验证,则它将返回Windows用户名。但是如果您使用FormAuthentication,它将返回当前登录的用户名。