Di situs web saya ketika pengguna mengklik tombol "Logout", halaman Logout.aspx memuat kode Session.Clear()
.
Di ASP.NET/C#, apakah ini menghapus semua cookie? Atau apakah ada kode lain yang perlu ditambahkan untuk menghapus semua cookie di situs web saya?
Session.Abandon
akan menghapus cookie sesi ASP.NET, tetapi bukan cookie yang Anda setel secara manual, seperti ID pengguna di sini. DanCookies["whatever"]
tidak pernah nol; kerangka kerja akan membuat cookie jika Anda meminta cookie yang tidak ada.Cookies["whatever"]
mengembalikan null jika cookie tidak ada! Saya tahu ini adalah komentar lama tetapi saya tidak ingin pembaca lain disesatkan oleh komentar ini.Expires
TIDAK disetel keDateTime.MinValue
karena ini benar-benar akan memberikan cookie sebuah Sesi kedaluwarsa, yang berarti menunggu sampai browser / tab (tergantung browser) ditutup sebelum menghapus cookie.Tidak, Cookies hanya dapat dibersihkan dengan menyetel tanggal Kedaluwarsa untuk masing-masing .
if (Request.Cookies["UserSettings"] != null) { HttpCookie myCookie = new HttpCookie("UserSettings"); myCookie.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(myCookie); }
Pada saat
Session.Clear()
:Session
koleksi dihapus.Session_End
acara tidak terjadi.Jika Anda menggunakan metode ini selama logout, Anda juga harus menggunakan
Session.Abandon
metode untukSession_End
acara:sumber
if
garis itu tidak benar-benar berfungsi. Saat Anda meminta cookie denganCookies["whatever"]
framework akan membuat cookie jika tidak ada.Request
objek.Response
objeknya. Menarik :)Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(-1)
. Disini server akan meminta browser untuk menghapus cookie. Browser akan menghapusnya jika ada.Ini yang saya gunakan:
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(); } }
sumber
Sayangnya, bagi saya, menyetel "Kedaluwarsa" tidak selalu berhasil. Cookie tidak terpengaruh.
Kode ini berhasil untuk saya:
HttpContext.Current.Session.Abandon(); HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
dimana
"ASP.NET_SessionId"
nama cookie tersebut. Ini tidak benar-benar menghapus cookie, tetapi menimpanya dengan cookie kosong, yang cukup dekat untuk saya.sumber
Saya hanya ingin menunjukkan bahwa cookie ID Sesi tidak dihapus saat menggunakan Session.Abandon seperti yang dikatakan orang lain.
http://support.microsoft.com/kb/899918
sumber
Sekarang tahun 2018, jadi di ASP.NET Core, ada fungsi bawaan langsung. Untuk menghapus cookie, coba kode ini:
if(Request.Cookies["aa"] != null) { Response.Cookies.Delete("aa"); } return View();
sumber
Anda tidak boleh menyimpan kata sandi sebagai cookie. Untuk menghapus cookie, Anda benar-benar hanya perlu mengubah dan mengakhirinya. Anda tidak dapat benar-benar menghapusnya, yaitu menghapusnya dari disk pengguna.
Berikut ini contohnya:
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 }
sumber
Mengambil judul Pertanyaan OP sebagai menghapus semua cookie - "Hapus Cookie di situs web"
Saya menemukan kode dari Dave Domagala di web di suatu tempat. Saya mengedit Dave untuk mengizinkan cookie Google Analytics juga - yang memutar semua cookie yang ditemukan di situs web dan menghapus semuanya. (Dari sudut pandang pengembang - memperbarui kode baru ke situs yang ada, adalah sentuhan yang bagus untuk menghindari masalah dengan pengguna yang mengunjungi kembali situs tersebut).
Saya menggunakan kode di bawah ini bersama-sama dengan membaca cookie terlebih dahulu, memegang data yang diperlukan - kemudian mengatur ulang cookie setelah mencuci semuanya bersih dengan loop di bawah ini.
Kode:
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. }
Tambahan: Jika Anda Menggunakan Google Analytics
Loop / delete di atas akan menghapus SEMUA cookie untuk situs tersebut, jadi jika Anda menggunakan Google Analytics - mungkin berguna untuk menyimpan cookie __utmz karena cookie ini melacak dari mana pengunjung berasal, mesin pencari apa yang digunakan, apa link diklik, kata kunci apa yang digunakan, dan di mana mereka berada di dunia saat situs Anda diakses.
Jadi untuk mempertahankannya, bungkus pernyataan if yang sederhana setelah nama cookie diketahui:
... 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); }
sumber
Meskipun ini adalah utas lama, saya pikir jika seseorang masih mencari solusi di masa depan.
HttpCookie mycookie = new HttpCookie("aa"); mycookie.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(mycookie1);
Itulah triknya bagi saya.
sumber
Response.Cookies ["UserSettings"]. Kedaluwarsa = DateTime.Now.AddDays (-1)
sumber
Anda harus menyetel tanggal kedaluwarsa untuk menghapus cookie
Request.Cookies[yourCookie]?.Expires.Equals(DateTime.Now.AddYears(-1));
Ini tidak akan memunculkan pengecualian jika cookie tidak ada.
sumber