كيفية حذف ملف تعريف الارتباط للعميل؟


مرحبًا، هناك شيء لا أفهمه بشأن ملفات تعريف الارتباط. عندما يتم إنشاء ملف تعريف الارتباط، يتم إنشاؤه على متصفح العميل، يمكنني رؤية ملف تعريف الارتباط الذي قمت بإنشائه في ملفات تعريف الارتباط على المتصفح. الآن قام مستخدمان بتسجيل الدخول في أوقات مختلفة بواسطة مع وضع علامة “تذكرني”، تم إنشاء ملفي تعريف ارتباط على متصفح كليهما. عندما يقوم أحد المستخدمين بتسجيل الخروج، على الرغم من أنني لا أستطيع حذف ملف تعريف الارتباط فعليًا، فإنه يشير إلى أنه لا يمكنني سوى تحديث التاريخ المنتهي. لنفترض أنني فعلت هذا، هذا هو المكان الذي لا أستطيع أن أفهمه، عندما أقوم بتسجيل الخروج، أقوم بتحديد اسم ملف تعريف الارتباط هناك وإزالته أو إعادة تعيين التاريخ،

ولكن كيف يعرف الخادم العميل الذي تنتمي إليه هذه العملية؟ لأنه عندما أقوم بإنشائه، أعطي فقط اسم ملف تعريف ارتباط عام، باختصار، لم يتم إنشاء ملف تعريف الارتباط الخاص بالمستخدم، وعندما أحذف ملف تعريف الارتباط، لأنني أفعل ذلك على الخادم، فلن يحدث حذف ملف تعريف الارتباط هذا للمستخدمين الآخرين؟ باختصار، سؤالي هو كيف يمكن معرفة أنه يجب حذف ملف تعريف الارتباط الخاص بالمستخدم x فقط عند قيام المستخدم بتسجيل الخروج؟ شكرًا

ما حاولت:

لقد حاولت حذف ملف تعريف الارتباط الموجود على الخادم ولكني فشلت.

الحل 1

الخادم لا. العميل يفعل.

يتم تخزين ملفات تعريف الارتباط على جهاز العميل بواسطة المتصفح ضمن المستخدم الحالي (Windows أو Linux أو Android أو أي شيء آخر) – وبما أن كل مستخدم على الجهاز لديه مناطق بيانات منفصلة، ​​فإن المتصفح يخزنها في بيانات المستخدم الحالية (لا تحتوي على الوصول إلى أي شيء آخر).

لذلك عندما يصل الخادم إلى ملفات تعريف الارتباط، فإنه يطلبها من المتصفح، الذي يصل إلى بيانات المستخدم الحالية لجلب المعلومات الصحيحة.

يختلف مستخدمو الخادم: فهم عبارة عن “بنية” تستخدم المعلومات من ملفات تعريف الارتباط للمتصفح لتحديد مستخدم الخادم الذي سيقوم بتسجيل الدخول إلى موقعك. عندما يقوم هذا المستخدم بتسجيل الخروج، فإنه يسجل الخروج من موقعك، وهو ما لا يؤثر على ملفات تعريف الارتباط إلا إذا كتب رمز موقعك على وجه التحديد بيانات ملفات تعريف الارتباط الجديدة.

الحل 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");
        }

هنا تقول FormsAuthentication.SignOut(); ويرسل ملف تعريف الارتباط الجديد إلى العميل عن طريق إعادة تعيين التاريخ. ثم هل يمكننا القول أن الخادم يقوم بإعادة إنشاء ملف تعريف الارتباط وإنشاء ملف تعريف ارتباط جديد عن طريق تحديث التاريخ وإرساله إلى المتصفح، ويقوم المتصفح باستبدال ملف تعريف الارتباط الجديد بالملف الموجود ويمنع ملف تعريف الارتباط من العمل؟ إذا كان الأمر كذلك، فإن المتصفح لا يرسل ملف تعريف ارتباط قديم إلى الخادم على أي حال من خلال النظر إلى تاريخ ووقت ملف تعريف الارتباط عند تقديم طلب من الموقع، أليس كذلك؟ لذا، من جانب الخادم، لا أحتاج إلى التحقق مما إذا كان ملف تعريف الارتباط هذا قديمًا أم لا، وإذا كان قديمًا، فلن ينتقل إلى الخادم أبدًا على أي حال؟

لا أفهم الفرق بين ملف تعريف الارتباط العادي وFormsAuthentication ومرة ​​أخرى لا أفهم الفرق بين إنشاء ملف تعريف ارتباط باستخدام FormsAuthentication و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);

コメント

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