使用 Windows 身份验证检索客户端用户名
我正在尝试检索在 ASP.NET 中登录到我们 Intranet 上的计算机的人员的用户名和客户端计算机名称。 这仅用于记录目的。 我检索用户名“System.Security.Principal.WindowsIdentity.GetCurrent().Name”,问题是访问此站点的任何人都显示相同的用户名(即我部署应用程序的服务器名称)。 请帮忙。 我在 web.config 中使用 Windows 身份验证模式。
I'm attempting to retrieve the user name and client machine name of the person logged on to a computer on our intranet in ASP.NET. This is just for logging purposes. I retrieve the user name "System.Security.Principal.WindowsIdentity.GetCurrent().Name", problem is whoever accessing this site showing the same username (that is server name where I have deployed my application) for all. Please help. I am using windows authentication mode in web.config.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
用户名可以如@Mehrdad<所述/a>. 对于用户计算机的名称,您可以使用 HttpRequest 对象,如下所示:(
编辑)
在 web.config 文件中,我使用此行:
在 default.aspx.cs 中,我使用此行:
这会产生以下输出:
用户名:HPAS\amantur
机器地址:127.0.0.1
机器名称:127.0.0.1
The name of the user can be have as described by @Mehrdad. For the name of the user's machine you can use HttpRequest object like this:
(edit)
In the web.config file I'm using this line:
In the default.aspx.cs I'm using this:
This is proucing following output:
User Name: HPAS\amantur
Machine Address: 127.0.0.1
Machine Name: 127.0.0.1
您使用的代码将获取与当前线程关联的
WindowsIdentity
(这是运行 ASP.NET 的标识)。 除非您根据客户端用户身份进行模拟,否则这是行不通的。 你需要使用这个:The code you are using will get the
WindowsIdentity
associated with the current thread (which is the identity ASP.NET is running on). Unless you are impersonating based on client user identity that won't work. You need to use this: