Προγραμματισμός

Πώς να εργαστείτε με cookie στο ASP.NET Core

Ένα cookie είναι ένα κομμάτι δεδομένων που χρησιμοποιείται συνήθως για την αποθήκευση πληροφοριών σχετικά με τον χρήστη και αποθηκεύεται στον υπολογιστή του χρήστη. Στα περισσότερα προγράμματα περιήγησης, κάθε cookie αποθηκεύεται ως μικρό αρχείο, αλλά στον Firefox αποθηκεύονται όλα μαζί σε ένα μόνο αρχείο. Τα cookie παρουσιάζονται ως ζεύγη τιμών-κλειδιών και μπορείτε να επωφεληθείτε από τα πλήκτρα για ανάγνωση, εγγραφή ή διαγραφή cookie.

Το ASP.NET Core χρησιμοποιεί cookies για τη διατήρηση της κατάστασης περιόδου λειτουργίας. το cookie που περιέχει το αναγνωριστικό περιόδου σύνδεσης αποστέλλεται στον πελάτη με κάθε αίτημα. Αυτό το άρθρο παρουσιάζει μια συζήτηση για το πώς μπορούμε να εργαστούμε με τα cookies στο 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 είναι εγκατεστημένο στο σύστημά σας, ακολουθήστε τα βήματα που περιγράφονται παρακάτω για να δημιουργήσετε ένα νέο έργο ASP.NET Core MVC στο Visual Studio.

  1. Εκκινήστε το Visual Studio IDE.
  2. Κάντε κλικ στο "Δημιουργία νέου έργου".
  3. Στο παράθυρο "Δημιουργία νέου έργου", επιλέξτε "ASP.NET Core Web Application" από τη λίστα των προτύπων που εμφανίζονται.
  4. Κάντε κλικ στο Επόμενο.
  5. Στο παράθυρο "Διαμόρφωση του νέου έργου", καθορίστε το όνομα και την τοποθεσία για το νέο έργο.
  6. Προαιρετικά, επιλέξτε το πλαίσιο ελέγχου "Τοποθετήστε λύση και έργο στον ίδιο κατάλογο".
  7. Κάντε κλικ στο Δημιουργία.
  8. Στο παράθυρο "Δημιουργία νέας εφαρμογής ASP.NET Core Web" που εμφανίζεται στη συνέχεια, επιλέξτε .NET Core ως χρόνο εκτέλεσης και ASP.NET Core 2.2 (ή μεταγενέστερη έκδοση) από την αναπτυσσόμενη λίστα στην κορυφή.
  9. Επιλέξτε "Web Application (Model-View-Controller)" ως πρότυπο έργου για να δημιουργήσετε μια νέα εφαρμογή ASP.NET Core MVC.
  10. Βεβαιωθείτε ότι τα πλαίσια ελέγχου "Ενεργοποίηση υποστήριξης Docker" και "Διαμόρφωση για HTTPS" δεν είναι επιλεγμένα, καθώς δεν θα χρησιμοποιούμε αυτές τις δυνατότητες εδώ.
  11. Βεβαιωθείτε ότι ο Έλεγχος ταυτότητας έχει οριστεί σε "Χωρίς έλεγχο ταυτότητας", καθώς ούτε εδώ θα χρησιμοποιούμε έλεγχο ταυτότητας.
  12. Κάντε κλικ στο Δημιουργία.

Θα πρέπει τώρα να έχετε ένα νέο έργο ASP.NET Core MVC έτοιμο να ξεκινήσει στο Visual Studio. Θα χρησιμοποιήσουμε αυτό το έργο στις επόμενες ενότητες αυτού του άρθρου.

Διαβάστε ένα cookie στο ASP.NET Core

Μπορείτε να διαβάσετε ένα cookie από τη συλλογή Request.Cookies. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να διαβάσετε ένα cookie από το αντικείμενο Request στο ASP.NET Core.

string cookie = Request.Cookies ["Κλειδί"];

Εάν θέλετε να καθορίσετε τον χρόνο λήξης του cookie, μπορείτε να χρησιμοποιήσετε την υπερφορτωμένη έκδοση της μεθόδου προσάρτησης, όπως φαίνεται στο απόσπασμα κώδικα που δίνεται παρακάτω.

Επιλογή CookieOptions = νέα CookieOptions ();

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

Response.Cookies.Apendend (κλειδί, τιμή, επιλογή);

Η τάξη CookieOptions σας επιτρέπει να καθορίσετε τις ακόλουθες πρόσθετες ιδιότητες κατά τη δημιουργία ενός cookie:

  • Τομέα - χρησιμοποιείται για τον καθορισμό του τομέα που σχετίζεται με ένα cookie
  • Χρόνος λήξης - χρησιμοποιείται για τον καθορισμό του χρόνου λήξης του cookie
  • Μονοπάτι - χρησιμοποιείται για τον καθορισμό της διαδρομής cookie
  • Πολιτική ασφαλείας - χρησιμοποιείται για να καθορίσει εάν το cookie είναι προσβάσιμο μέσω HTTPS
  • Http Μόνο - χρησιμοποιείται για να καθορίσει εάν το cookie είναι διαθέσιμο μόνο στον διακομιστή

Γράψτε ένα cookie στο ASP.NET Core

Για να γράψετε ένα cookie μπορείτε να επωφεληθείτε από τη μέθοδο προσάρτησης που σχετίζεται με το αντικείμενο Request. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορεί να επιτευχθεί αυτό.

Response.Cookies.Apendend (somekey, somevalue);

Διαγράψτε ένα cookie στο ASP.NET Core

Για να αφαιρέσετε ένα cookie, μπορείτε να χρησιμοποιήσετε τη μέθοδο Διαγραφή της συλλογής Cookies που σχετίζεται με το αντικείμενο Αίτημα. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορεί να επιτευχθεί αυτό.

Response.Cookies.Delete (somekey);

Πρόσβαση στο HttpContext στον πυρήνα ASP.NET

Σε αυτήν την ενότητα θα εξετάσουμε πώς μπορούμε να εργαστούμε με δεδομένα cookie στο ASP.NET Core. Θα πρέπει να έχουμε πρόσβαση στο HttpContext για να έχουμε πρόσβαση στο αντικείμενο Αίτημα. Μπορείτε να αποκτήσετε πρόσβαση στο HttpContext στο ASP.NET Core χρησιμοποιώντας τη διεπαφή IHttpContextAccessor. Η κλάση HttpContextAccessor εφαρμόζει αυτήν τη διεπαφή.

Πρώτα πρέπει να εγγραφείτε IHttpContextAccessor για ένεση εξάρτησης. Το ακόλουθο απόσπασμα κώδικα απεικονίζει πώς μπορείτε να προσθέσετε μια μοναδική υπηρεσία τύπου HttpContextAccessor στη μέθοδο ConfigureServices της κλάσης εκκίνησης.

public void ConfigureServices (υπηρεσίες IServiceCollection)

        {

υπηρεσίες. AddSingleton<>

HttpContextAccessor> ();

// Άλλος κωδικός

        }

Μπορείτε να επωφεληθείτε από την έγχυση εξάρτησης για να λάβετε μια αναφορά στην παρουσία IHttpContextAccessor. Αυτό με τη σειρά του θα σας δώσει μια αναφορά στο HttpContext.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να αποκτήσετε πρόσβαση στην παρουσία IHttpContextAccessor στον ελεγκτή. Σημειώστε ότι το HomeController δημιουργείται από προεπιλογή όταν δημιουργείτε ένα νέο έργο ASP.NET Core MVC στο Visual Studio.

δημόσια τάξη HomeController: Controller

{

ιδιωτικό μόνο για ανάγνωση IHttpContextAccessor _httpContextAccessor;

δημόσιο HomeController (IHttpContextAccessor httpContextAccessor)

  {

this._httpContextAccessor = httpContextAccessor;

  }   

// Γράψτε τις μεθόδους δράσης σας εδώ

}

Γράψτε τα δεδομένα cookie με τη μέθοδο ελεγκτή ASP.NET Core

Μπορείτε να χρησιμοποιήσετε την ακόλουθη μέθοδο για την εγγραφή δεδομένων cookie στον ελεγκτή σας.

public IActionResult Write (πλήκτρο συμβολοσειράς, τιμή συμβολοσειράς, bool isPersistent)

  {

Επιλογές CookieOptions = νέα CookieOptions ();

εάν (isPeristent)

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

αλλού

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

_httpContextAccessor.HttpContext.Response.Cookies.Apendend

(κλειδί, τιμή, επιλογές)

Επιστροφή Προβολή ("WriteCookie");

  }

Διαβάστε τα δεδομένα cookie στη μέθοδο ελεγκτή ASP.NET Core

Όταν τα δεδομένα cookie έχουν γραφτεί με επιτυχία, μπορείτε να χρησιμοποιήσετε την ακόλουθη μέθοδο για να διαβάσετε τα δεδομένα cookie στον ελεγκτή σας.

δημόσια IActionResult Read (πλήκτρο συμβολοσειράς)

  {

ViewBag.Data =

_httpContextAccessor.HttpContext.Request.Cookies [κλειδί];

Επιστροφή Προβολή ("ReadCookie");

  }

Για να ελέγξετε εάν ένα cookie έχει γραφτεί σωστά, μπορείτε να ελέγξετε την προσωρινή μνήμη cookie του προγράμματος περιήγησης ιστού. Σε μια μελλοντική ανάρτηση, θα εξετάσουμε πώς μπορούμε να εργαστούμε με έλεγχο ταυτότητας και εξουσιοδότηση βάσει cookie στο ASP.NET Core.