私のアプリケーションでは、URLが特定のIPアドレスでアクセスされていることを確認したいと思います。ページを表示する必要があるのは1回だけで、次回はそのページに移動するときにページが表示されないようにする必要があります。
どうすればこれを達成できますか?
よろしく、プラサド
私は最近これを使用して、失敗したログインにユーザーを記録するためのユーザーの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回表示するのか、それともIPごとに1回だけ表示するのか。
クライアントマシンベースの場合は、そのページにCookieを保存させ、その存在を確認して、そのページが以前にアクセスされたことがあるかどうかを判断します。
データベースにIPアドレスを保存してみるか、Cookie変数を利用することができます。クッキーについてもっと読む
ここで提案および説明されているように:ASP.NETでユーザーのクライアントIPアドレスを取得するにはどうすればよいですか?
あなたはこれをチェックすることができますPage_Load
Request.ServerVariables["REMOTE_ADDR"];
また、別のページに移動するために使用できるようになったら、アクセスがすでに行われている場合Server.Transfer
(警告ページやホームページに戻るなど)。
どのIPがページに一度アクセスしたかを永続化する方法は、セッション、アプリケーションキャッシュ、データベース、Cookieなどのニーズに応じて決まります。
ページがロードされたら、IPアドレスを取得してデータベースに保存します。次に、ページがロードされたときにも、データベース内の可能なエントリに対してIPを確認します。存在しない場合は、保存してページを読み込みます。それが存在する場合は、ユーザーまたは何かをリダイレクトします。