Как вы находите имя пользователя / личность в C # - PullRequest
17 голосов
/ 09 декабря 2008

Мне нужно программно найти имя пользователя с помощью C #. В частности, я хочу подключить пользователя системы / сети к текущему процессу. Я пишу веб-приложение, которое использует встроенную безопасность Windows.

Ответы [ 3 ]

37 голосов
/ 09 декабря 2008

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

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

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

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

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

string userName = "Fred"; // todo
string[] roles = { "User", "Admin" }; // todo
Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(userName), roles);
16 голосов
/ 09 декабря 2008

Зависит от контекста приложения. Вы можете использовать Environment.UserName (console) или HttpContext.Current.User.Identity.Name (web). Обратите внимание, что при использовании встроенной проверки подлинности Windows может потребоваться удалить домен из имени пользователя. Кроме того, вы можете получить текущего пользователя, используя свойство User страницы в codebehind, а не ссылаться на него из текущего HTTP-контекста.

3 голосов
/ 10 февраля 2015
string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...