domenica 17 ottobre 2021

C# Asp.Net Core MVC la gestione dei cookie .Net 5

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_c-aspnet-core-mvc-la-gestione-dei-cookie_1756.aspx


In questo articolo vedremo come gestire i cookie nelle applicazioni web di tipo Asp.Net Core MVC, utilizzando il linguaggio di programmazione C# e l’ambiente di sviluppo Visual Studio 2019.
Può tornare utile gestire alcune informazioni tramite cookie che permettono di creare applicazioni in base alla navigazione.
Nell’articolo verrà fornito al lettore la gestione dei cookie, come l’aggiunta, la lettura del dato e la cancellazione.
L’applicazione sarà una semplice pagina web, con tre collegamenti ipertestuali, per aggiunta, lettura e cancellazione del cookie ed un campo per visualizzare il valore del cookie, il tutto come mostrato in figura 1.



Figura 1 – I vari pulsanti per la gestione dei cookie

Creazione del progetto

Si crea un nuovo progetto di tipo web selezionando come modello “app web Asp.Net Core (Model-view-Controller), il tutto come mostrato in figura 2.

Figura 2 – il modello da selezionare

Impostare un nome al progetto, e selezionare come versione del Framework .Net 5.
Confermare il tutto tramite il pulsante “Crea”.

Stesura del codice

Terminata la creazione del codice, non ci resta che scrivere il codice per la gestione dei cookie, in particolare nella pagina index, dovremmo creare tre collegamenti ipertestuali e un div per la visualizzazione del dato, il tutto come mostrato in figura 1.
Passiamo alla pagina “Index” situata nella cartella “Home” ed aggiungiamo tre “ActionLink” con il quale a seconda della voce verranno invocati i vari metodi, quali aggiunta del cookie, lettura e cancellazione.
La pagina sarà composta da un model di tipo “String” in modo che visualizza il valore del cookie e tre “ActionLink” ossia collegamenti ipertestuali, che richiamano per ogni voce un determinato metodo che permette di eseguire l’aggiunta di un cookie, il rilevamento del valore del cookie e la relativa cancellazione del cookie stesso.

Qui di seguito il codice completo della pagina “Index” delle suddette operazioni

@model string

@{

    ViewData["Title"] = "Home Page";

}

 

<div class="text-center">

    <h1 class="display-4">Gestione Cookie</h1>

    <p>Gestione dei cookie</p>

    <br />

    <a href="@Url.Action("AggiungiCookie", "Home")">Aggiungi Cookie</a>

    <a href="@Url.Action("RilevaCookie", "Home")">Rileva Valore Cookie</a>

    <a href="@Url.Action("EliminaCookie", "Home")">Elimina Cookie</a>

    <br /><br /> Valore cookie rilato:<br />

    @{

        if (Model != null)

        {

            <div>@Model</div>

        }

    }

 

</div>



Terminata la stesura della pagina non resta che scrivere nel controller “Home” il codice per eseguire le varie operazioni. Andremo a creare tre metodi che permetteranno di gestire i cookie tramite la classe “CookieOptions” .
Si crea un metodo per l’aggiunta dei cookie impostando i parametri del nome chiave cookie, valore e durata di 20 giorni.
Qui di seguito il codice dell’aggiunta di un cookie.
Controller

Controller

C#

public IActionResult AggiungiCookie()

        {

            string chiaveCookie = "NomeChiave";

            string ValoreCookie = "Valore";

            CookieOptions objCookie = new CookieOptions();

            objCookie.Expires = DateTime.Now.AddDays(20);

            Response.Cookies.Append(chiaveCookie, ValoreCookie, objCookie);

        

 

            return View("Index");

        }



Tramite CookieOptions, sono impostati alcune informazioni come la durata, mentre tramite il metodo Append, della proprietà Cookies di Response, vengono salvate nel browser il cookie.
Nel browser Chrome, per il collegamento “Aggiungi Cookie”, troveremo nella voce “Application” (3.1) Coockies (3.2) il dato salvato (3.3)




Figura 3 – Il cookie salvato visibile nelle opzioni del browser Chrome.


Continuiamo a scrivere il codice per la gestione dei cookie, un metodo per la lettura del valore del cookie che andremo a visualizzare nella pagina.
Qui di seguito il frammento di codice delle suddette operazioni.


public IActionResult RilevaCookie()

        {

            string ValoreRilevato = Request.Cookies["NomeChiave"];

            return View("Index", ValoreRilevato);

        }



Siamo giunti al termine della stesura del codice, dobbiamo scrivere il codice per la cancellazione del cookie.
Il codice per la cancellazione del cookie è simile all’aggiunta di un cookie con la sola differenza che la durata è di un giorno precedente a quello attuale, in questo modo per scadenza viene rimosso.
Impostando il giorno prima di oggi nella proprietà “Expires” dell’oggetto di tipo “cookieOptions” il cookie verrà cancellato.

C#

  public IActionResult EliminaCookie()

        {

            string chiaveCookie = "NomeChiave";

            string ValoreCookie = "Valore";

            CookieOptions objCookie = new CookieOptions();

            objCookie.Expires = DateTime.Now.AddDays(-1);

            Response.Cookies.Append(chiaveCookie, ValoreCookie, objCookie);

 

 

            return View("Index");

        }





Non ci resta che testare il nostro applicativo e fare click sul collegamento di aggiunta cookie, poi sul pulsante per rilevare il valore ed infine sulla cancellazione, per ogni collegamento click aprire la finestra delle opzioni del browser e verificare nella sezione Cookies il dato inserito.

Conclusioni

L’articolo ha voluto introdurre il lettore alla creazione di applicazioni web, in particolar modo di Asp.Net Core MVC, sull’utilizzo dei cookie. I cookie che spesso si sente parlare, soprattutto quando si naviga in internet nel quale ci viene chiesto il consenso dei dati, permettono di salvare informazioni sull’utente che in quel momento sta navigando nella nostra applicazione web, e quindi gestire le varie pagine o rilevare i suoi comportamenti per poi offrire un’esperienza di navigazione in base al singolo utente che usa l’applicativo.
Naturalmente per la gestione di particolari informazioni sull’utilizzo dell’applicativo intranet, è consigliabile valutare la tecnica di salvataggio dei log su un database, con il quale può riportare interessanti indicazioni, sia ai tecnici e sia all’amministrazione aziendale.

Nessun commento: