0

在我的应用程序中,我想检查是否在特定 IP 地址中访问了 url。只有一次需要显示该页面,而下次导航到该页面时该页面不应该出现。

我怎样才能做到这一点?

问候,普拉萨德

4

5 回答 5

3

我最近使用它来识别用户 IP-Address(es) 以在登录失败时记录他们:

// Look for a proxy address first
var IP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
//Trim and lowercase IP if not null
if (IP != null)
{
    IP = IP.ToLower().Trim();
}
if (IP == null || IP.Equals("unknown"))
{
    //If IP is null use different detection method else pull the correct IP from list.
    IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToLower().Trim();
}

String[] IPs = null;
if (IP.IndexOf(",") > -1)
{
    IPs = IP.Split(',');
}
else
{
    IPs = new string[] { IP };
}

(注:从 VB.NET 转换而来)

于 2012-10-19T10:20:25.670 回答
2

您实际上是希望每个客户端显示一次页面,还是每个 IP 真正显示一次?

如果它是基于客户端的机器,那么让该页面存储一个 cookie 并检查它的存在以确定该页面是否曾被访问过。

于 2012-10-19T10:19:10.507 回答
2

您可以尝试将 IP 地址存储在数据库中,也可以使用 cookie 变量。阅读有关Cookie的更多信息

于 2012-10-19T10:20:38.770 回答
1

如此处建议和描述的:如何在 ASP.NET 中获取用户的客户端 IP 地址?

你可以在Page_Load

Request.ServerVariables["REMOTE_ADDR"];

如果访问已经完成,您可以使用Server.Transfer移动到另一个页面(如警告页面或返回主页等......)

您坚持哪个 IP 访问您的页面一次的方式取决于您和您的需求、会话、应用程序缓存、数据库、cookie ......

于 2012-10-19T10:17:13.893 回答
0

加载页面时获取 IP 地址并将其存储在数据库中。然后,同样在加载页面时,根据数据库中可能的条目检查 IP。如果它不存在,请将其存储并加载页面。如果它已经存在,请重定向用户或其他东西。

于 2012-10-19T10:17:14.827 回答