asp.net怎样获取客户端Windows用户名?

Nick_Ngai 2013-08-02 03:32:55
我的项目发布在服务器,想做一个功能,当客户端访问网站时可以获取到这个客户端的Windows登陆用户名,
在网上找了很多方法都不行,如下:
1. System.Security.Principal.WindowsPrincipal p = System.Threading.Thread.CurrentPrincipal as System.Security.Principal.WindowsPrincipal;
string strName = p.Identity.Name;
2.string strName = HttpContext.Current.User.Identity.Name;
这两种去不到值,Web.config也配置了如下:
<authentication mode="Windows"/>
<identity impersonate="true"/>
3.string userName = Environment.UserName;
4.WindowsIdentity identity = WindowsIdentity.GetCurrent();
string userName = identity.Name;
3和4只是获取本地用户(服务器)
5.Page.Request.UserHostAddress;
Page.Request.UserHostName
这两种只是获取客户端IP地址

谁知道怎样获取客户端Windows用户名?
2和4虽然能够实现,但是不够好,因为会弹出登陆验证,即使能够做到不弹验证,他们也是采用Coolie方式,所以获取的用户名并不一定准确。

JS方法如下:
var WshNetwork = new ActiveXObject("WScript.Network");
alert("Domain_Name =" + WshNetwork.UserDomain);
alert("Computer_Name =" + WshNetwork.ComputerName);
alert("User_Name =" + WshNetwork.UserName);
獲取JS有什麽方法?上面的要設置IE安全性才行,所以不是很好
...全文
560 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nick_Ngai 2013-08-09
  • 打赏
  • 举报
回复
http://www.codeproject.com/Articles/94612/Windows-Authentication 做個參考吧,只能勉強用了,需要把訪問站點加入到IE本地信任站點
Nick_Ngai 2013-08-08
  • 打赏
  • 举报
回复
真的做不到,獲取不到用戶名,或者獲取到用戶是否在域中也可以?
Nick_Ngai 2013-08-08
  • 打赏
  • 举报
回复
如果想寫一個獲取用戶名的ActiveX控件需要怎麼寫?有源碼嗎?
tiwenid0 2013-08-08
  • 打赏
  • 举报
回复
服务器端代码在服务器执行,要在客户端执行C#代码或者C++代码可以用activeX控件,或者FLASH
Nick_Ngai 2013-08-05
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
[quote=引用 楼主 anboat 的回复:] 我的项目发布在服务器,想做一个功能,当客户端访问网站时可以获取到这个客户端的Windows登陆用户名, 在网上找了很多方法都不行,如下: 1. System.Security.Principal.WindowsPrincipal p = System.Threading.Thread.CurrentPrincipal as System.Security.Principal.WindowsPrincipal; string strName = p.Identity.Name;
通常我们看第一条,如果你的思考方法是南辕北辙的,就不值得看更多地了! 你这个是web上在千里之外的浏览器端执行的代码吗?[/quote] 謝謝,倒也不是千里之外,省内吧。上面那个方法试过,貌似不行。
令狐苦瓜 2013-08-05
  • 打赏
  • 举报
回复
服务器的应该可以,客户端的貌似。。。
Nick_Ngai 2013-08-05
  • 打赏
  • 举报
回复
引用 8 楼 youzi1643 的回复:
string domainAndName = Page.User.Identity.Name;//读取域登录用户名,格式为Domainname\username (域名名称\用户名称) 然后你取“\”后面一部分,应该就是你要的信息。
謝謝,但這種方法也是不登陸獲取不到值
youzi1643 2013-08-05
  • 打赏
  • 举报
回复
string domainAndName = Page.User.Identity.Name;//读取域登录用户名,格式为Domainname\username (域名名称\用户名称) 然后你取“\”后面一部分,应该就是你要的信息。
CqCoder 2013-08-03
  • 打赏
  • 举报
回复
如果是Windows系统 可以通过在客户端安装ACTIVEX插件实现
dbgeer 2013-08-03
  • 打赏
  • 举报
回复
别想了
threenewbee 2013-08-03
  • 打赏
  • 举报
回复
你怎么知道用户通过Windows访问你的网站,而不是别的系统?所以Web标准中没有一种允许浏览器将用户操作系统的登录名发给服务器的机制。
  • 打赏
  • 举报
回复
引用 楼主 anboat 的回复:
我的项目发布在服务器,想做一个功能,当客户端访问网站时可以获取到这个客户端的Windows登陆用户名, 在网上找了很多方法都不行,如下: 1. System.Security.Principal.WindowsPrincipal p = System.Threading.Thread.CurrentPrincipal as System.Security.Principal.WindowsPrincipal; string strName = p.Identity.Name;
通常我们看第一条,如果你的思考方法是南辕北辙的,就不值得看更多地了! 你这个是web上在千里之外的浏览器端执行的代码吗?
Thomas Xing 2013-08-02
  • 打赏
  • 举报
回复
通过asp.net是不可能获取这些东西的。。 你只能是通过在页面里隐性嵌入一个Flash,通过Flash获取客户端的信息并返回给你的服用器接收端。
ChinaOneCup 2013-08-02
  • 打赏
  • 举报
回复
除了用插件,其它方法真不行,web本身的安全机制就不允许

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧