当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中找到用户名/身份

如何解决《如何在C#中找到用户名/身份》经验,为你挑选了2个好方法。

我需要使用C#以编程方式查找用户名.具体来说,我想让系统/网络用户连接到当前进程.我正在编写一个使用Windows集成安全性的Web应用程序.



1> Marc Gravell..:

身份的抽象视图通常是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());

但是,委托人也可以完全定制 - 它不一定与Windows帐户等有关.另一个应用程序可能使用登录屏幕允许任意用户登录:

string userName = "Fred"; // todo
string[] roles = { "User", "Admin" }; // todo
Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(userName), roles);



2> tvanfosson..:

取决于应用程序的上下文.您可以使用Environment.UserName(控制台)或HttpContext.Current.User.Identity.Name(web).请注意,使用Windows集成身份验证时,可能需要从用户名中删除域.此外,您可以使用代码隐藏中的页面的User属性来获取当前用户,而不是从当前HTTP上下文中引用它.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有