Как Вы находите пользовательское имя/Идентификационные данные в C#

16
задан TylerH 17 July 2019 в 19:38
поделиться

2 ответа

Абстрактное представление идентификационных данных часто IPrincipal / IIdentity:

IPrincipal principal = Thread.CurrentPrincipal;
IIdentity identity = principal == null ? null : principal.Identity;
string name = identity == null ? "" : identity.Name;

Это позволяет тому же коду работать во многих различных моделях (winform, asp.net, wcf, и т.д.) - но он полагается на идентификационные данные, устанавливаемые заранее (так как он определяется приложением). Например, в winform Вы могли бы использовать идентификационные данные окон текущего пользователя:

Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());

Однако принципал может также быть абсолютно сделан на заказ - он не обязательно касается учетных записей окон и т.д. Другое приложение могло бы использовать экран входа в систему, чтобы позволить произвольным пользователям входить в систему:

string userName = "Fred"; // todo
string[] roles = { "User", "Admin" }; // todo
Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(userName), roles);
38
ответ дан 30 November 2019 в 15:24
поделиться

Зависит от контекста приложения. Можно использовать Среду. UserName (консоль) или HttpContext. Текущий. Пользователь. Идентификационные данные. Имя (сеть). Обратите внимание, что при использовании Windows интегрировал аутентификацию, Вы, возможно, должны удалить домен из имени пользователя. Кроме того, можно получить текущего пользователя, использующего Свойство пользователя страницы в codebehind, вместо того, чтобы сослаться на него от текущего контекста HTTP.

16
ответ дан 30 November 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: