Cara bekerja dengan cookie di ASP.NET Core

Cookie adalah sepotong data yang biasanya digunakan untuk menyimpan informasi tentang pengguna dan disimpan di komputer pengguna. Di sebagian besar browser, setiap cookie disimpan sebagai file kecil, tetapi di Firefox, cookie disimpan bersama-sama dalam satu file. Cookie direpresentasikan sebagai pasangan nilai kunci, dan Anda dapat memanfaatkan kunci tersebut untuk membaca, menulis, atau menghapus cookie.

ASP.NET Core menggunakan cookie untuk mempertahankan status sesi; cookie yang berisi ID sesi dikirim ke klien dengan setiap permintaan. Artikel ini menyajikan diskusi tentang bagaimana kami dapat bekerja dengan cookie di ASP.NET Core.

Untuk bekerja dengan contoh kode yang disediakan dalam artikel ini, Anda harus menginstal Visual Studio 2019 di sistem Anda. Jika Anda belum memiliki salinannya, Anda dapat mengunduh Visual Studio 2019 di sini.

Membuat proyek ASP.NET Core MVC di Visual Studio

Pertama, mari buat proyek ASP.NET Core MVC di Visual Studio 2019. Dengan asumsi Visual Studio 2019 diinstal di sistem Anda, ikuti langkah-langkah yang diuraikan di bawah ini untuk membuat proyek ASP.NET Core MVC baru di Visual Studio.

  1. Luncurkan Visual Studio IDE.
  2. Klik "Buat proyek baru".
  3. Di jendela "Buat proyek baru", pilih "Aplikasi Web Inti ASP.NET" dari daftar templat yang ditampilkan.
  4. Klik Next.
  5. Di jendela "Configure your new project", tentukan nama dan lokasi untuk proyek baru tersebut.
  6. Secara opsional, pilih kotak centang "Tempatkan solusi dan proyek dalam direktori yang sama".
  7. Klik Buat.
  8. Di jendela "Buat Aplikasi Web ASP.NET Core Baru" yang ditampilkan berikutnya, pilih .NET Core sebagai runtime dan ASP.NET Core 2.2 (atau yang lebih baru) dari daftar drop-down di bagian atas.
  9. Pilih "Aplikasi Web (Model-View-Controller)" sebagai template proyek untuk membuat aplikasi ASP.NET Core MVC baru. 
  10. Pastikan kotak centang "Aktifkan Dukungan Docker" dan "Konfigurasi untuk HTTPS" tidak dicentang karena kami tidak akan menggunakan fitur tersebut di sini.
  11. Pastikan Autentikasi disetel ke "Tanpa Autentikasi" karena kami juga tidak akan menggunakan autentikasi di sini.
  12. Klik Buat. 

Anda sekarang harus memiliki proyek ASP.NET Core MVC baru yang siap digunakan di Visual Studio. Kami akan menggunakan proyek ini di bagian selanjutnya dari artikel ini.

Baca cookie di ASP.NET Core

Anda dapat membaca cookie dari koleksi Request.Cookies. Potongan kode berikut menggambarkan bagaimana Anda dapat membaca cookie dari objek Permintaan di ASP.NET Core.

string cookie = Request.Cookies ["Key"];

Jika Anda ingin menentukan waktu kedaluwarsa cookie, Anda dapat menggunakan versi overload dari metode Tambahkan seperti yang ditunjukkan dalam cuplikan kode yang diberikan di bawah ini.

Opsi CookieOptions = new CookieOptions (); 

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

Response.Cookies.Append (kunci, nilai, opsi); 

Kelas CookieOptions memungkinkan Anda untuk menentukan properti tambahan berikut saat membuat cookie:

  • Domain - digunakan untuk menentukan domain yang terkait dengan cookie
  • Waktu kedaluwarsa - digunakan untuk menentukan waktu kedaluwarsa cookie
  • Path - digunakan untuk menentukan jalur cookie
  • Kebijakan keamanan - digunakan untuk menentukan apakah cookie dapat diakses melalui HTTPS
  • HttpOnly - digunakan untuk menentukan apakah cookie hanya tersedia untuk server

Tulis cookie di ASP.NET Core

Untuk menulis cookie, Anda dapat memanfaatkan metode Tambahkan yang berkaitan dengan objek Request. Potongan kode berikut menggambarkan bagaimana hal ini dapat dicapai.

Response.Cookies.Append (somekey, somevalue);

Hapus cookie di ASP.NET Core

Untuk menghapus cookie, Anda dapat menggunakan metode Hapus dari kumpulan Cookie yang berkaitan dengan objek Request. Potongan kode berikut menunjukkan bagaimana ini dapat dicapai.

Response.Cookies.Delete (somekey);

Akses HttpContext di ASP.NET Core

Di bagian ini kita akan memeriksa bagaimana kita dapat bekerja dengan data cookie di ASP.NET Core. Kita perlu mengakses HttpContext agar dapat mengakses objek Request. Anda dapat mengakses HttpContext di ASP.NET Core menggunakan antarmuka IHttpContextAccessor. Kelas HttpContextAccessor mengimplementasikan antarmuka ini.

Pertama, Anda harus mendaftarkan IHttpContextAccessor untuk injeksi ketergantungan. Potongan kode berikut menggambarkan bagaimana Anda dapat menambahkan layanan tunggal jenis HttpContextAccessor di metode ConfigureServices kelas Startup.

public void ConfigureServices (layanan IServiceCollection)

        {

            services.AddSingleton

            HttpContextAccessor> ();

            // Kode lain

        }

Anda bisa memanfaatkan injeksi ketergantungan untuk mendapatkan referensi ke instance IHttpContextAccessor. Ini pada gilirannya akan memberi Anda referensi ke HttpContext.

Potongan kode berikut mengilustrasikan bagaimana Anda dapat mengakses instance IHttpContextAccessor di controller. Perhatikan bahwa HomeController dibuat secara default saat Anda membuat proyek ASP.NET Core MVC baru di Visual Studio.

kelas publik HomeController: Controller

{

  pribadi hanya baca IHttpContextAccessor _httpContextAccessor;

  publik HomeController (IHttpContextAccessor httpContextAccessor)

  {

     this._httpContextAccessor = httpContextAccessor;

  }   

  // Tulis metode tindakan Anda di sini

}

Tulis data cookie dalam metode pengontrol ASP.NET Core

Anda dapat menggunakan metode berikut untuk menulis data cookie di pengontrol Anda.

publik IActionResult Write (kunci string, nilai string, bool isPersistent)

  {

       Opsi CookieOptions = CookieOptions baru ();

       jika (isPersistent)

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

       lain

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

       _httpContextAccessor.HttpContext.Response.Cookies.Append

       (kunci, nilai, opsi);

       kembali Lihat ("WriteCookie");

  }

Membaca data cookie dalam metode pengontrol ASP.NET Core

Setelah data cookie berhasil ditulis, Anda dapat menggunakan metode berikut untuk membaca data cookie di pengontrol Anda.

publik IActionResult Baca (kunci string)

  {

       ViewBag.Data =

       _httpContextAccessor.HttpContext.Request.Cookies [kunci];

       kembali View ("ReadCookie");

  }

Untuk memeriksa apakah cookie telah ditulis dengan benar, Anda dapat memeriksa cache cookie di browser web Anda. Di posting mendatang, kita akan memeriksa bagaimana kita dapat bekerja dengan otentikasi dan otorisasi berbasis cookie di ASP.NET Core.