Как получить windows usernaame в ASP. NET Core 3.0 - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь получить windows имя пользователя в ASP. NET Core 3.0

Я нашел здесь много вопросов по этому топу c, но я не могу найти ответа. мог бы использовать.

Мое приложение использует аутентификацию по логину и паролю, но многие пользователи (не все из них) имеют собственный windows логин, поэтому я хотел бы дать им возможность авторизоваться через Windows логин.

На локальном хосте работает этот код:

string windowsUserName = Environment.UserDomainName + "\\" + Environment.UserName;

, но когда я развертываю его на сервере, я получаю это имя пользователя: IIS APPPOOL / DefaultAppPool

Я пробовал чтобы изменить настройки запуска с:

"iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,

на:

"iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": true,

, но я могу получить имя входа windows только через HttpContext.User.Identity.Name (у меня пробовал это только на localhost), но этот метод я не хочу использовать - я храню здесь идентификатор пользователя из базы данных, поэтому я не хочу его переписывать.

Есть ли шанс чтобы получить необходимые данные без использования windows логина для всех?

Большое спасибо за предложения.

1 Ответ

2 голосов
/ 14 июля 2020

убедитесь, что ваш 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);
}

Обновление:

, которое вы упомянули в своем сообщении, которое называется смешанной аутентификацией. вы не можете добиться этого, используя одно приложение, вам нужно использовать два приложения для реализации вашего требования. обратитесь к по этой ссылке , чтобы узнать подробнее, как этого добиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...