[ad_1]
Halo, ada sesuatu yang saya tidak mengerti tentang cookie. Ketika cookie dibuat, itu dibuat di browser klien, saya dapat melihat cookie yang saya buat di cookie di browser. Sekarang 2 pengguna masuk pada waktu yang berbeda dengan menandai ingat saya, 2 cookie dibuat di browser keduanya. ketika salah satu pengguna logout, meskipun saya tidak dapat menghapus cookie secara fisik, dikatakan bahwa saya hanya dapat memperbarui tanggal kedaluwarsa. Katakanlah saya melakukan ini, di sinilah saya tidak mengerti, ketika saya logout, saya memilih nama cookie di sana dan menghapusnya atau mengatur ulang tanggal,
tetapi bagaimana server mengetahui klien mana yang memiliki proses ini? Karena ketika saya membuatnya, saya hanya memberikan nama cookie generik, singkatnya cookie_client_id khusus pengguna tidak dibuat, ketika saya menghapus cookie, karena saya melakukan ini di server, penghapusan cookie ini tidak akan terjadi untuk pengguna lain? Singkatnya, pertanyaan saya adalah bagaimana cara mengetahui bahwa hanya x cookie pengguna yang harus dihapus ketika pengguna logout? terima kasih
Apa yang saya coba:
Saya mencoba menghapus cookie di server tetapi gagal.
Solusi 1
Server tidak. Klien melakukannya.
Cookie disimpan di mesin klien oleh browser di bawah pengguna saat ini (Windows, Linux, Android atau apa pun) – dan karena setiap pengguna di mesin memiliki area data terpisah, browser menyimpannya di data pengguna saat ini (tidak ada akses ke yang lain).
Jadi ketika server mengakses cookie, server memintanya dari browser, yang mengakses data pengguna saat ini untuk mengambil informasi yang benar.
Pengguna server berbeda: mereka adalah “konstruksi” yang menggunakan informasi dari cookie browser untuk memutuskan pengguna server mana yang akan masuk ke situs Anda. Saat pengguna tersebut keluar, mereka keluar dari situs Anda, yang tidak memengaruhi cookie kecuali kode situs Anda secara khusus menulis data cookie baru.
Solusi 2
I know that cookies are stored on the browser in the client's user profile, the server already writes it into a cookie on the browser. My question is that when the client wants to log out, it notifies the server, but this logout process takes place on the server side, for example <pre lang="C#">public ActionResult Logout() { Session.Clear(); Session.Abandon(); Session.RemoveAll(); FormsAuthentication.SignOut(); HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, ""); cookie1.Expires = DateTime.Now.AddYears(-1); Response.Cookies.Add(cookie1); return RedirectToAction("Index", "Login"); }
Di sini tertulis FormsAuthentication.SignOut(); dan mengirimkan file cookie baru ke klien dengan mengatur ulang tanggal. Lalu bisakah kita mengatakan bahwa server membuat ulang file cookie dan membuat file cookie baru dengan memperbarui tanggal dan mengirimkannya ke browser, browser menimpa file cookie baru dengan yang sudah ada dan mencegah cookie berfungsi? Jika demikian, browser tidak akan mengirimkan cookie bertanggal lama ke server dengan melihat tanggal dan waktu cookie saat membuat permintaan dari situs, bukan? Jadi di sisi server saya tidak perlu mengecek apakah cookie ini sudah lama atau belum, kalau sudah lama tetap tidak pernah masuk ke server?
Saya tidak memahami perbedaan antara cookie biasa dan FormsAuthentication dan sekali lagi saya tidak memahami perbedaan antara membuat cookie dengan FormsAuthentication dan FormsAuthentication.SetAutCookie
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(30), isPersistent, userData, FormsAuthentication.FormsCookiePath)
;
HttpCookie userInfo = new HttpCookie("userInfo"); userInfo["UserName"] = "Annathurai"; userInfo["UserColor"] = "Black"; userInfo.Expires.Add(new TimeSpan(0, 1, 0)); Response.Cookies.Add(userInfo);
[ad_2]
コメント