Làm cách nào để xóa cookie của khách hàng?

lập trình


Xin chào, có điều tôi không hiểu về cookie. Khi tạo cookie, nó được tạo trên trình duyệt của khách hàng, tôi có thể thấy cookie tôi đã tạo trong cookie trên trình duyệt. Hiện tại, 2 người dùng đăng nhập vào các thời điểm khác nhau bằng cách đánh dấu hãy nhớ tôi, 2 cookie đã được tạo trên trình duyệt của cả hai. Khi một trong những người dùng đăng xuất, mặc dù tôi không thể xóa cookie về mặt vật lý nhưng nó nói rằng tôi chỉ có thể cập nhật ngày hết hạn. Giả sử tôi đã làm điều này, đây là chỗ tôi không thể hiểu được, khi đăng xuất, tôi chọn tên cookie ở đó và xóa nó hoặc đặt lại ngày,

nhưng làm thế nào để máy chủ biết quá trình này thuộc về khách hàng nào? Bởi vì khi tạo tôi chỉ đặt tên cookie chung, tóm lại là không tạo cookie_client_id dành riêng cho người dùng, khi tôi xóa cookie, vì tôi làm điều này trên máy chủ nên việc xóa cookie này sẽ không xảy ra với những người dùng khác? Nói tóm lại, câu hỏi của tôi là làm sao nó biết rằng chỉ xóa cookie của người dùng x khi người dùng đăng xuất? Cảm ơn

Những gì tôi đã thử:

Tôi đã cố xóa cookie trên máy chủ nhưng không thành công.

Giải pháp 1

Máy chủ thì không. Khách hàng thực hiện.

Cookie được trình duyệt lưu trữ trên máy khách theo người dùng hiện tại (Windows, Linux, Android hoặc bất cứ thứ gì) – và vì mỗi người dùng trên máy có các vùng dữ liệu riêng biệt nên trình duyệt sẽ lưu trữ nó trong dữ liệu người dùng hiện tại (nó không có truy cập vào bất kỳ cái nào khác).

Vì vậy, khi máy chủ truy cập cookie, nó sẽ yêu cầu chúng từ trình duyệt, trình duyệt này sẽ truy cập dữ liệu người dùng hiện tại để tìm nạp thông tin phù hợp.

Người dùng máy chủ thì khác: họ là một “cấu trúc” sử dụng thông tin từ cookie của trình duyệt để quyết định người dùng máy chủ nào sẽ đăng nhập vào trang web của bạn. Khi người dùng đó đăng xuất, họ đăng xuất khỏi trang web của bạn, điều này không ảnh hưởng đến cookie trừ khi mã trang web của bạn ghi cụ thể dữ liệu cookie mới.

Giải pháp 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");
        }

Ở đây nó ghi FormsAuthentication.SignOut(); và gửi tệp cookie mới cho khách hàng bằng cách đặt lại ngày. Khi đó chúng ta có thể nói rằng máy chủ tạo lại tệp cookie và tạo tệp cookie mới bằng cách cập nhật ngày và gửi nó tới trình duyệt, trình duyệt sẽ ghi đè tệp cookie mới bằng tệp hiện có và ngăn cookie hoạt động? Nếu đúng như vậy thì trình duyệt sẽ không gửi cookie cũ đến máy chủ bằng cách xem ngày và giờ của cookie khi thực hiện yêu cầu từ trang web, phải không? Như vậy ở phía server mình không cần kiểm tra xem cookie này có cũ hay không, nếu cũ rồi thì nó cũng không bao giờ vào được server cả?

Tôi không hiểu sự khác biệt giữa cookie thông thường và FormsAuthentication và một lần nữa tôi không hiểu sự khác biệt giữa việc tạo cookie bằng FormsAuthentication và FormsAuthentication.SetAutCookie

C#
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
        username,
        DateTime.Now,
        DateTime.Now.AddMinutes(30),
        isPersistent,
        userData,
        FormsAuthentication.FormsCookiePath)

;

C#
HttpCookie userInfo = new HttpCookie("userInfo");
userInfo["UserName"] = "Annathurai";
userInfo["UserColor"] = "Black";
userInfo.Expires.Add(new TimeSpan(0, 1, 0));
Response.Cookies.Add(userInfo);

コメント

タイトルとURLをコピーしました