在我的应用程序中,我想检查是否在特定 IP 地址中访问了 url。只有一次需要显示该页面,而下次导航到该页面时该页面不应该出现。
我怎样才能做到这一点?
问候,普拉萨德
我最近使用它来识别用户 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 转换而来)
您实际上是希望每个客户端显示一次页面,还是每个 IP 真正显示一次?
如果它是基于客户端的机器,那么让该页面存储一个 cookie 并检查它的存在以确定该页面是否曾被访问过。
您可以尝试将 IP 地址存储在数据库中,也可以使用 cookie 变量。阅读有关Cookie的更多信息
如此处建议和描述的:如何在 ASP.NET 中获取用户的客户端 IP 地址?
你可以在Page_Load
Request.ServerVariables["REMOTE_ADDR"];
如果访问已经完成,您可以使用Server.Transfer
移动到另一个页面(如警告页面或返回主页等......)
您坚持哪个 IP 访问您的页面一次的方式取决于您和您的需求、会话、应用程序缓存、数据库、cookie ......
加载页面时获取 IP 地址并将其存储在数据库中。然后,同样在加载页面时,根据数据库中可能的条目检查 IP。如果它不存在,请将其存储并加载页面。如果它已经存在,请重定向用户或其他东西。