【问题标题】:Client connection information客户端连接信息
【发布时间】:2012-01-02 07:25:10
【问题描述】:

我正在编写一个可以从本地网络和外部访问的程序。我必须识别本地和外部请求,以便为每个请求提供不同的功能。那可能吗? 另一种方法是记录所有本地计算机的 IP 地址,并通过 Request.ServerVariables["Remote_ADDRS"] 获取客户端的 IP 地址并比较它们,如果请求 IP 地址不匹配,则表示请求不匹配当地的。这似乎很尴尬且效率低下,因为我必须保存所有本地地址,并且必须重新注册任何新计算机。 有没有一种简单的方法来识别请求是来自本地网络还是来自外部? 谢谢!

【问题讨论】:

    标签: c# asp.net request lan wan


    【解决方案1】:

    您的网络管理员将能够告诉您内部网络的 IP 范围。然后您可以简单地检查客户端IP是否属于内部范围。

    这样,您只需在更改内部范围时更改配置。这不应该经常发生。

    编辑:Here is a question and answer about IP ranges(虽然在 Java 中,但应该很容易转换)。

    【讨论】:

    • 内部网络请求不会都在 192.168.x.x 中吗?
    • 内部网络可以是 A、B 类(16 个连续子)或 C(256 个连续子)。 192.168.x.x 是 C 类网络,范围仅限 65K 个地址。
    • @driis 谢谢你,这就是我需要的。我知道IP是一个字符串,如何检查用户IP是否在字符串范围内?
    • IP 通常表示为字符串,但实际上它只有 4 个字节(对于 IPv4)。这取决于您实际获得的范围,但对于简单的网络,通常需要检查前 1-3 个字节是否匹配,具体取决于您给出的范围 - 或者您可以只制作一个 32 位整数4 个字节并与您给出的范围进行比较。
    • @driis 感谢您的链接,但我不知道如何进行转换。我会很感激这方面的帮助。
    【解决方案2】:

    您是否在包含内部用户的域中?如果是这样,您可以只向使用集成身份验证登录的用户提供内部功能。

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2014-04-18
      • 1970-01-01
      相关资源
      最近更新 更多