在我的应用程序中,我想检查是否在特定的ip地址中访问了url。只有一次需要显示页面,并且下次导航到该页面时页面不应该出现。
我怎样才能实现这个目标?
此致 普拉萨德
答案 0 :(得分:3)
我最近用这个来识别用户IP地址,以便在登录失败时登录:
// 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转换而来)
答案 1 :(得分:2)
您实际上是希望每个客户端显示一次页面,还是每个IP真正显示一次?
如果它是基于客户端的计算机,则让该页面存储一个cookie并检查它是否存在以确定该页面之前是否已被访问过。
答案 2 :(得分:2)
您可以尝试在数据库中存储IP地址,也可以使用cookie变量。详细了解Cookies
答案 3 :(得分:1)
按照建议和描述:How to get a user's client IP address in ASP.NET?
您可以在Page_Load
Request.ServerVariables["REMOTE_ADDR"];
如果您已经完成访问,则可以使用Server.Transfer
移动到其他页面(例如警告页面或返回主页等)
你坚持哪些IP访问你的页面的方式取决于你和你的需求,会话,应用程序缓存,数据库,cookie ......
答案 4 :(得分:0)
加载页面时获取IP地址并将其存储在数据库中。然后,在加载页面时,根据数据库中的可能条目检查IP。如果它不存在,请存储它并加载页面。如果它存在,则重定向用户或其他东西。