כיצד לעבוד עם קובצי Cookie ב- ASP.NET Core

קובץ cookie הוא פיסת נתונים המשמשת בדרך כלל לאחסון מידע אודות המשתמש ונשמרת במחשב המשתמש. ברוב הדפדפנים כל קובץ cookie נשמר כקובץ קטן, אך ב- Firefox הם מאוחסנים כולם בקובץ יחיד. קובצי Cookie מיוצגים כצמדי ערך מפתח, ותוכלו לנצל את המקשים לקריאה, כתיבה או מחיקה של קובצי Cookie.

ASP.NET Core משתמש בעוגיות כדי לשמור על מצב הפעלה; קובץ ה- cookie שמכיל את מזהה ההפעלה נשלח ללקוח עם כל בקשה. מאמר זה מציג דיון כיצד אנו יכולים לעבוד עם קובצי Cookie ב- ASP.NET Core.

כדי לעבוד עם דוגמאות הקוד המופיעות במאמר זה, עליך להתקין במערכת Visual Studio 2019 שלך. אם עדיין אין לך עותק, תוכל להוריד את Visual Studio 2019 כאן.

צור פרוייקט ASP.NET Core MVC ב- Visual Studio

ראשית, בואו ניצור פרויקט ASP.NET Core MVC ב- Visual Studio 2019. בהנחה ש- Visual Studio 2019 מותקן במערכת שלכם, בצעו את השלבים המתוארים להלן כדי ליצור פרויקט MVC Core חדש של ASP.NET ב- Visual Studio.

  1. הפעל את Visual Studio IDE.
  2. לחץ על "צור פרויקט חדש".
  3. בחלון "צור פרויקט חדש" בחר "ASP.NET יישום אינטרנט ליבה" מרשימת התבניות המוצגות.
  4. הקש "הבא.
  5. בחלון "הגדר את הפרויקט החדש שלך", ציין את השם והמיקום של הפרויקט החדש.
  6. לחלופין, בחר בתיבת הסימון "הצב פתרון ופרויקט באותה ספריה".
  7. לחץ על צור.
  8. בחלון "צור יישום אינטרנט חדש של ASP.NET Core" שמוצג הבא, בחר .NET Core בתור זמן הריצה ו- ASP.NET Core 2.2 (או מאוחר יותר) מהרשימה הנפתחת בחלק העליון.
  9. בחר "יישום אינטרנט (Model-View-Controller)" כתבנית הפרויקט ליצירת יישום MVC Core חדש של ASP.NET. 
  10. ודא שתיבות הסימון "אפשר תמיכה ב- Docker" ו- "הגדר עבור HTTPS" אינן מסומנות מכיוון שלא נשתמש בתכונות אלה כאן.
  11. ודא שהאימות מוגדר כ"לא אימות "מכיוון שגם כאן לא נשתמש באימות.
  12. לחץ על צור. 

כעת אמור להיות לך פרויקט חדש של ASP.NET Core MVC מוכן לשימוש ב- Visual Studio. נשתמש בפרויקט זה בחלקים הבאים של מאמר זה.

קרא עוגיה ב- ASP.NET Core

אתה יכול לקרוא עוגיה מאוסף Request.Cookies. קטע הקוד הבא ממחיש כיצד תוכלו לקרוא קובץ cookie מהאובייקט Request ב- ASP.NET Core.

עוגיית מחרוזת = Request.Cookies ["מפתח"];

אם ברצונך לציין את זמן תפוגת הקובץ של קובץ ה- cookie, תוכל להשתמש בגרסה העמוסה של שיטת הוספת כפי שמוצג בקטע הקוד המופיע למטה.

אפשרות CookieOptions = CookieOptions חדשים (); 

option.Expires = DateTime.Now.AddMilliseconds (10); 

Response.Cookies.Append (מפתח, ערך, אפשרות); 

המחלקה CookieOptions מאפשרת לך לציין את המאפיינים הנוספים הבאים בעת יצירת קובץ Cookie:

  • דומיין - משמש לציין את הדומיין המשויך לעוגיה
  • זמן תפוגה - משמש לציון זמן התפוגה של קובץ ה- cookie
  • נתיב - משמש לציון נתיב העוגיה
  • מדיניות אבטחה - משמשת לקביעת קובץ ה- cookie באמצעות HTTPS
  • HttpOnly - משמש כדי לציין אם קובץ ה- cookie זמין רק לשרת

כתוב קובץ cookie ב- ASP.NET Core

כדי לכתוב קובץ cookie תוכלו לנצל את שיטת הוספה הנוגעת לאובייקט Request. קטע הקוד הבא ממחיש כיצד ניתן להשיג זאת.

תגובה.עוגיות.הצטרף (מישהו, איזה ערך);

מחק קובץ cookie בליבה של ASP.NET

כדי להסיר קובץ cookie, תוכלו להשתמש בשיטת המחיקה של אוסף ה- Cookies הנוגע לאובייקט Request. קטע הקוד הבא מראה כיצד ניתן להשיג זאת.

תגובה. עוגיות. מחק (משהו);

גישה ל- HttpContext בליבת ASP.NET

בחלק זה נבחן כיצד אנו יכולים לעבוד עם נתוני עוגיות ב- ASP.NET Core. נצטרך לגשת ל- HttpContext כדי שנוכל לגשת לאובייקט Request. ניתן לגשת ל- HttpContext בליבת ASP.NET באמצעות ממשק IHttpContextAccessor. מחלקת HttpContextAccessor מיישמת ממשק זה.

ראשית עליך לרשום את IHttpContextAccessor להזרקת תלות. קטע הקוד הבא ממחיש כיצד ניתן להוסיף שירות של יחיד מסוג HttpContextAccessor בשיטת ConfigureServices של מחלקת ההפעלה.

חלל ציבורי ConfigureServices (שירותי ISCollection)

        {

            services.AddSingleton

            HttpContextAccessor> ();

            // קוד אחר

        }

אתה יכול לנצל את הזרקת התלות כדי לקבל התייחסות למופע IHttpContextAccessor. זה בתורו יספק לך התייחסות ל- HttpContext.

קטע הקוד הבא ממחיש כיצד ניתן לגשת למופע IHttpContextAccessor בבקר. שים לב ש- HomeController נוצר כברירת מחדל בעת יצירת פרויקט MVC Core חדש של ASP.NET ב- Visual Studio.

מחלקה ציבורית HomeController: בקר

{

  פרטי קריאה בלבד IHttpContextAccessor _httpContextAccessor;

  בקר ביתי ציבורי (IHttpContextAccessor httpContextAccessor)

  {

     this._httpContextAccessor = httpContextAccessor;

  }   

  // כתוב כאן את שיטות הפעולה שלך

}

כתוב נתוני עוגיות בשיטת בקר הליבה של ASP.NET

אתה יכול להשתמש בשיטה הבאה כדי לכתוב נתוני עוגיות בבקר שלך.

Public IActionResult כתוב (מפתח מחרוזת, ערך מחרוזת, bool isPersistent)

  {

       אפשרויות CookieOptions = CookieOptions חדשים ();

       אם (הוא קבוע)

           options.Expires = DateTime.Now.AddDays (1);

       אַחֵר

           options.Expires = DateTime.Now.AddSeconds (10);

       _httpContextAccessor.HttpContext.Response.Cookies.Append

       (מפתח, ערך, אפשרויות);

       החזר תצוגה ("WriteCookie");

  }

קרא נתוני עוגיות בשיטת בקר הליבה של ASP.NET

לאחר שנתוני העוגיה נכתבו בהצלחה, תוכלו להשתמש בשיטה הבאה לקריאת נתוני העוגיה בבקרכם.

IActionResult ציבורי לקרוא (מפתח מחרוזת)

  {

       ViewBag.Data =

       _httpContextAccessor.HttpContext.Request.Cookies [מפתח];

       חזרה View ("ReadCookie");

  }

כדי לבדוק אם קובץ cookie נכתב כהלכה, אתה יכול לבדוק את מטמון העוגיות של דפדפן האינטרנט שלך. בפוסט עתידי נבחן כיצד נוכל לעבוד עם אימות מבוסס-עוגיות והרשאה ב- ASP.NET Core.