获取客户端IP地址

liufei19880218 2013-01-21 02:34:58
讲一下我系统的大概:本系统是管理用户权限的,下面有很多应用系统,他们的用户登录都是透过本系统提供的登陆验证WEB SERVICE,系统有WEB和ERP,所说的“获取客户端(用户)的IP地址”中的客户端就是访问这些系统的登陆页面的用户电脑IP地址。

结构:用户登录(用户的电脑)->访问各个应用系统(很多系统对应很多服务器主机)->各个系统的主机调用登录WEB SERVICE(一个指定的服务器主机)验证用户、返回登陆信息,而我要在这个WEB SERVICE中取得用户登录所使用电脑的IP地址。

目前做法:在WEB SERVICE中添加方法,调用这个WEB服务的时候记录下调用这个服务的主机的IP地址。问题来了:用户访问的是各个应用系统,应用系统去调用WEB服务。等于说是各个应用系统所在主机去调用WEB服务,这样记录下来的是各个应用系统所在主机的IP地址,根本就没用户客户端什么事。愁人……

想让各个系统在登陆页面获取登陆信息传入WEB服务这种方式可行,但是不太现实,因为涉及的系统太多,不可能叫他们一一修改。不知道有没有更好的方式?

请问大家有没有做过相关的,或者有思路的也可以给我说下,谢谢了!
...全文
639 32 打赏 收藏 举报
写回复
32 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liufei19880218 2013-02-16
结了……新年快乐!
  • 打赏
  • 举报
回复
鸭梨山大帝 2013-01-25
"想让各个系统在登陆页面获取登陆信息传入WEB服务这种方式可行,但是不太现实,因为涉及的系统太多,不可能叫他们一一修改。不知道有没有更好的方式?" 你想要的不是就跟你在顶楼说的一样了?
引用 26 楼 liufei19880218 的回复:
引用 25 楼 liufei19880218 的回复:可不可以顺便问个问题?在WEB服务中是否可以设置某些参数,让其夹带一些调用者的信息,这样在WEB服务被调用之后截取获得的信息。补充:至于夹带什么信息,就由WEB服务设置,调用者就对应传给服务就行。
  • 打赏
  • 举报
回复
解决好说一下,学习下
  • 打赏
  • 举报
回复
liufei19880218 2013-01-25
引用 25 楼 liufei19880218 的回复:
可不可以顺便问个问题?在WEB服务中是否可以设置某些参数,让其夹带一些调用者的信息,这样在WEB服务被调用之后截取获得的信息。
补充:至于夹带什么信息,就由WEB服务设置,调用者就对应传给服务就行。
  • 打赏
  • 举报
回复
liufei19880218 2013-01-25
可不可以顺便问个问题?在WEB服务中是否可以设置某些参数,让其夹带一些访问者的信息,这样在WEB服务被调用之后截取获得的信息。
  • 打赏
  • 举报
回复
liufei19880218 2013-01-25
引用 19 楼 Lost_Painting 的回复:
楼上都是些瞎贴代码的,楼主根本没有提及到代理服务器的概念,你们为什么都那么自然的往proxy上带呢? 看看楼主给出的访问路径: ============= 用户登录(用户的电脑)-> 访问各个应用系统(很多系统对应很多服务器主机)-> 各个系统的主机调用登录WEB SERVICE(一个指定的服务器主机)验证用户 --> 返回登陆信息 中间哪里有任何一……
你算是认真看了问题的,谢谢了!我自己慢慢想办法。
  • 打赏
  • 举报
回复
liufei19880218 2013-01-25
引用 30 楼 wonderfuly 的回复:
可以用先从客户端获取IP,各系统在调用WebService时传入IP,WebService就可以接收IP地址信息了。 从各系统调用WebService时可以用SoapHeader来传入IP信息,这样系统原有方法都不需要修改,只要先传SoapHeader信息即可。
谢谢提醒!正在学习怎么使用SOAP,有没有好的学习地方推荐一个?
  • 打赏
  • 举报
回复
游戏人间 2013-01-25
可以用先从客户端获取IP,各系统在调用WebService时传入IP,WebService就可以接收IP地址信息了。 从各系统调用WebService时可以用SoapHeader来传入IP信息,这样系统原有方法都不需要修改,只要先传SoapHeader信息即可。
  • 打赏
  • 举报
回复
liufei19880218 2013-01-25
引用 28 楼 Lost_Painting 的回复:
"想让各个系统在登陆页面获取登陆信息传入WEB服务这种方式可行,但是不太现实,因为涉及的系统太多,不可能叫他们一一修改。不知道有没有更好的方式?" 你想要的不是就跟你在顶楼说的一样了? 引用 26 楼 liufei19880218 的回复: 引用 25 楼 liufei19880218 的回复:可不可以顺便问个问题?在WEB服务中是否可以设置某些参数,让其夹带一些调用者的信息,这样在……
是其中一种思路,目前想到的解决思路就这个了,要不这么问,很多人都会误解。
  • 打赏
  • 举报
回复
liufei19880218 2013-01-23
- - 讨论的方向都偏了,我想问的是怎么解决WEB服务获取客户端地址的问题。至于具体的怎么获取,这个应该有办法取得。
  • 打赏
  • 举报
回复
夜色镇歌 2013-01-23
局域网话。。获取的每一个IP都是一样的。。你可以外网IP+内网IP。。要是代理的话 就没办法了
  • 打赏
  • 举报
回复
yyl8781697 2013-01-23
用了代理就很难获取到真实的客户端IP了
  • 打赏
  • 举报
回复
「已注销」 2013-01-23
后台获取 http://pv.sohu.com/cityjson 的页面信息 得到IP 等一切信息 然后自己写个正则或者截取一下 方法就是调用一下sohu的API
  • 打赏
  • 举报
回复
luobing261314 2013-01-23
Request.ServerVariables["REMOTE_ADDR"]
  • 打赏
  • 举报
回复
nizaiganshenme 2013-01-23
楼主这个跨服务器,欺骗还真是不好解决啊?
  • 打赏
  • 举报
回复
nizaiganshenme 2013-01-23
一个是服务器,一个是本机的!
  • 打赏
  • 举报
回复
鸭梨山大帝 2013-01-23
又一个不看需求,就直接贴代码的...
  • 打赏
  • 举报
回复
nizaiganshenme 2013-01-23
//获得客户端ip //private string GetClientIP() //{ // string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; // if (null == result || result == String.Empty) // { // result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; // } // if (null == result || result == String.Empty) // { // result = HttpContext.Current.Request.UserHostAddress; // } // return result; //}
  • 打赏
  • 举报
回复
鸭梨山大帝 2013-01-23
楼上都是些瞎贴代码的,楼主根本没有提及到代理服务器的概念,你们为什么都那么自然的往proxy上带呢? 看看楼主给出的访问路径: ============= 用户登录(用户的电脑)-> 访问各个应用系统(很多系统对应很多服务器主机)-> 各个系统的主机调用登录WEB SERVICE(一个指定的服务器主机)验证用户 --> 返回登陆信息 中间哪里有任何一台proxy存在?你们不会认为"各个系统的主机调用登录WEB SERVICE",就是proxy server吧?这些server难道会转发客户端的http信息? ============= 明确的告诉楼主,由于"各个系统的主机调用登录WEB SERVICE" 不会转发客户端的http原始的请求信息,所以不能简单的从 登录WEB SERVICE 去获取原始客户端的IP,因为客户端信息在中途已经被丢失了.
  • 打赏
  • 举报
回复
加载更多回复(12)
相关推荐
发帖
.NET社区

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
加入社区
帖子事件
创建了帖子
2013-01-21 02:34
社区公告

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

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