如何在 ASP.NET Core 3.0 中获取 windows 用户名
How to get windows usernaame in ASP.NET Core 3.0
我正在尝试在 ASP.NET Core 3.0
中获取 windows 用户名
我在这里发现了很多关于这个主题的问题,但我找不到任何我可以使用的答案。
我的应用程序使用登录密码身份验证,但很多用户(不是全部)都有自己的 windows 登录名,所以我想给他们机会通过 Windows 登录登录。
在本地主机上运行此代码:
string windowsUserName = Environment.UserDomainName + "\" + Environment.UserName;
但是当我将它部署到服务器时,我得到了这个用户名:
IIS APPPOOL/DefaultAppPool
我尝试更改启动设置:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
至:
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": true,
但我只能通过 HttpContext.User.Identity.Name 获取 windows 登录名(我只在本地主机上尝试过),但我不想使用这种方法 - 我' m 在这里存储来自数据库的用户 ID,所以我不想重写它。
是否有任何机会在不使用每个人的 windows 登录的情况下获取所需的数据?
非常感谢您的建议。
确保您的 web.config 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore forwardWindowsAuthToken="true" processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\YourWebsite.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</configuration>
HomeController.cs
然后,您可以使用以下代码从控制器获取用户 Windows 用户名。
public IActionResult Index()
{
string userName = HttpContext.User.Identity.Name;
return View(userName);
}
更新:
您在 post 中提到的称为混合模式身份验证。您无法通过使用单个应用程序来实现此目的,您需要使用两个应用程序来实现您的要求。请参阅 this link 以了解更多详细信息,您如何实现这一目标。
我正在尝试在 ASP.NET Core 3.0
中获取 windows 用户名我在这里发现了很多关于这个主题的问题,但我找不到任何我可以使用的答案。
我的应用程序使用登录密码身份验证,但很多用户(不是全部)都有自己的 windows 登录名,所以我想给他们机会通过 Windows 登录登录。
在本地主机上运行此代码:
string windowsUserName = Environment.UserDomainName + "\" + Environment.UserName;
但是当我将它部署到服务器时,我得到了这个用户名: IIS APPPOOL/DefaultAppPool
我尝试更改启动设置:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
至:
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": true,
但我只能通过 HttpContext.User.Identity.Name 获取 windows 登录名(我只在本地主机上尝试过),但我不想使用这种方法 - 我' m 在这里存储来自数据库的用户 ID,所以我不想重写它。
是否有任何机会在不使用每个人的 windows 登录的情况下获取所需的数据?
非常感谢您的建议。
确保您的 web.config 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore forwardWindowsAuthToken="true" processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\YourWebsite.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</configuration>
HomeController.cs 然后,您可以使用以下代码从控制器获取用户 Windows 用户名。
public IActionResult Index()
{
string userName = HttpContext.User.Identity.Name;
return View(userName);
}
更新:
您在 post 中提到的称为混合模式身份验证。您无法通过使用单个应用程序来实现此目的,您需要使用两个应用程序来实现您的要求。请参阅 this link 以了解更多详细信息,您如何实现这一目标。