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安全性才行,所以不是很好
...全文
448 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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本身的安全机制就不允许
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2013-08-02 03:32
社区公告
暂无公告