私のウェブサイトでは、ユーザーが「ログアウト」ボタンをクリックすると、Logout.aspxページがコードSession.Clear()
でロードされます。
ASP.NET/C#では、これによりすべてのCookieがクリアされますか?または、WebサイトのすべてのCookieを削除するために追加する必要がある他のコードはありますか?
そのようなものを試してください:
if (Request.Cookies["userId"] != null)
{
Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);
}
しかし、それは使用することも理にかなっています
Session.Abandon();
他にも多くのシナリオで。
いいえ、Cookieは 有効期限の設定 によってのみクリーニングできます。
if (Request.Cookies["UserSettings"] != null)
{
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
Session.Clear()
の瞬間:
Session
コレクションからすべてのキーと値のペアが削除されます。 Session_End
イベントは発生しません。ログアウト中にこのメソッドを使用する場合は、Session.Abandon
メソッドを使用してSession_End
イベントにも使用する必要があります。
これは私が使用するものです:
private void ExpireAllCookies()
{
if (HttpContext.Current != null)
{
int cookieCount = HttpContext.Current.Request.Cookies.Count;
for (var i = 0; i < cookieCount; i++)
{
var cookie = HttpContext.Current.Request.Cookies[i];
if (cookie != null)
{
var expiredCookie = new HttpCookie(cookie.Name) {
Expires = DateTime.Now.AddDays(-1),
Domain = cookie.Domain
};
HttpContext.Current.Response.Cookies.Add(expiredCookie); // overwrite it
}
}
// clear cookies server side
HttpContext.Current.Request.Cookies.Clear();
}
}
残念ながら、私にとって「有効期限」の設定は常に機能しませんでした。 Cookieは影響を受けませんでした。
このコードは私のために働いた:
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
ここで、"ASP.NET_SessionId"
はCookieの名前です。これは実際にはCookieを削除しませんが、空のCookieで上書きします。
他の人が言ったように、Session.Abandonを使用する場合、セッションID Cookieは削除されないことを指摘したいだけです。
セッションを放棄しても、セッションID Cookieはユーザーのブラウザーから削除されません。したがって、セッションが破棄されるとすぐに、同じアプリケーションへの新しい要求は同じセッションIDを使用しますが、新しいセッション状態インスタンスを持ちます。同時に、ユーザーが同じDNSドメイン内で別のアプリケーションを開いた場合、1つのアプリケーションからAbandonメソッドが呼び出された後、ユーザーはセッション状態を失うことはありません。
セッションIDを再利用したくない場合があります。セッションIDを再利用しないことの影響を理解している場合は、次のコード例を使用してセッションを放棄し、セッションID Cookieをクリアします。
Session.Abandon(); Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
このコード例は、サーバーからセッション状態をクリアし、セッション状態Cookieをnullに設定します。 null値は、事実上ブラウザからCookieをクリアします。
パスワードをCookieとして保存しないでください。 Cookieを削除するには、実際に変更して有効期限を切る必要があります。本当に削除することはできません。つまり、ユーザーのディスクから削除することはできません。
サンプルを次に示します。
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i=0; i<limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday
Response.Cookies.Add(aCookie); // overwrite it
}
現在は2018年であるため、ASP.NET Coreには、簡単な機能が組み込まれています。 Cookieを削除するには、次のコードを試してください。
if(Request.Cookies["aa"] != null)
{
Response.Cookies.Delete("aa");
}
return View();
OPの質問タイトルをすべてのCookieを削除するものとみなす-「WebサイトのCookieを削除する」
ウェブ上のどこかでDave Domagalaのコードに出会いました。 Google AnalyticsのCookieも許可するようにDaveを編集しました-Webサイトで見つかったすべてのCookieをループし、それらをすべて削除しました。 (開発者の視点から-新しいコードを既存のサイトに更新することは、ユーザーがサイトを再訪する際の問題を回避するための素晴らしいタッチです)。
以下のコードを使用して、最初にCookieを読み取り、必要なデータを保持してから、以下のループですべてをきれいに洗った後にCookieをリセットします。
コード:
int limit = Request.Cookies.Count; //Get the number of cookies and
//use that as the limit.
HttpCookie aCookie; //Instantiate a cookie placeholder
string cookieName;
//Loop through the cookies
for(int i = 0; i < limit; i++)
{
cookieName = Request.Cookies[i].Name; //get the name of the current cookie
aCookie = new HttpCookie(cookieName); //create a new cookie with the same
// name as the one you're deleting
aCookie.Value = ""; //set a blank value to the cookie
aCookie.Expires = DateTime.Now.AddDays(-1); //Setting the expiration date
//in the past deletes the cookie
Response.Cookies.Add(aCookie); //Set the cookie to delete it.
}
追加:Google Analyticsを使用する場合
上記のループ/削除は、サイトのすべてのCookieを削除します。したがって、Googleアナリティクスを使用する場合は、__ utmz Cookieを保持しておくと便利です。リンクがクリックされたキーワード、使用されたキーワード、ウェブサイトにアクセスしたときに世界のどこにいたのか。
そのため、Cookie名がわかったら、簡単なifステートメントをラップします。
...
aCookie = new HttpCookie(cookieName);
if (aCookie.Name != "__utmz")
{
aCookie.Value = ""; //set a blank value to the cookie
aCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(aCookie);
}
これは古いスレッドですが、将来誰かがまだ解決策を探しているのではないかと考えました。
HttpCookie mycookie = new HttpCookie("aa");
mycookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(mycookie1);
それが私にとってのトリックでした。
Response.Cookies ["UserSettings"]。Expires = DateTime.Now.AddDays(-1)