Абстрактным представлением о личности часто является 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);