System.Security.Principal.WindowsIdentity.GetCurrent (). Name vs User.Identity.Name и какой из них использовать? - PullRequest
0 голосов
/ 09 июля 2019

Просто пытаюсь понять разницу здесь.Я переместил свое приложение ASP.Net Core Vue.js на сервер Win с рабочего стола Win 7, и оно сломалось

User.Identity.Name

, поэтомутеперь значение равно нулю.

Поэтому я изменил его на

System.Security.Principal.WindowsIdentity.GetCurrent (). Имя

, и этоснова работая и на моем рабочем столе, и на Win-сервере.

В чем разница, и я должен просто перейти к использованию более поздней версии?

1 Ответ

0 голосов
/ 09 июля 2019

Нет. Это совершенно разные вещи. HttpContext.User - это ClaimsPrincipal, созданный с помощью аутентификации конкретного пользователя. System.Security.Principal.WindowsIdentity является основным, используемым пулом приложений. Таким образом, он будет константой для приложения, тогда как HttpContext.User будет фактическим пользователем, выполняющим запрос к вашему приложению, при условии, что они аутентифицировались.

Я думаю, что люди могут запутаться при локальной разработке и использовании аутентификации Windows. В этом конкретном сценарии они будут одинаковыми, поскольку IIS Express работает под вашей учетной записью локального пользователя, что, разумеется, также подтверждает подлинность Windows. Практически в любой другой ситуации они будут отличаться, и откровенно очевидно, что System.Security.Principal.WindowsIdentity не то, что вы ищете.

Теперь о том, почему User.Identity.Name имеет значение null, вы, вероятно, ожидаете аутентификации в Windows, но не включили аутентификацию Windows для приложения, что означает, что вы на самом деле не вошли в систему. Щелкните правой кнопкой мыши свой проект (ы). выберите «Свойства» и перейдите на вкладку «Отладка». В нижней части экрана убедитесь, что установлен флажок Включить проверку подлинности Windows. Если у вас есть какая-либо часть вашего сайта, которая не требует авторизации, убедитесь, что включена опция Включить анонимную аутентификацию, или вы можете снять ее, вы хотите разрешить весь доступ к сайту для авторизации.

...