In
ASP.NET Core (Versione 2.1) può capitare di non riuscire ad impostare un cookie anche se tutto il codice è corretto e non ci sono segnalazioni di errore.
Questo è dovuto alla presenza delle
cookie policy impostate nello
Startup.cs:
public class Startup
{
...
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
...
}
}
in particolare al valore di
CheckConsentNeeded.
Questo valore è stato introdotto per soddisfare i requisiti dell
GDPR che prevede, tra le altre cose, di dare un informativa all'utente sul trattamento delle informazioni che il sito può raccogliere durante la sua navigazione. Se è impostato su
true, prevede che l'utente dia un esplicito consenso ad un avviso mostrato in pagina. Senza questo consenso
non viene generato nessun cookie ne emesso nessun errore.
Quindi se non serve raccogliere il consenso, come nel caso di una intranet, si può impostare il suo valore a
false:
options.CheckConsentNeeded = context => false;
se serve, ma dobbiamo per forza generare un cookie prima si aver avuto il consenso dell'utente, ad esempio per impostare la lingua, va settata la proprietà
IsEssential=true:
string key = "lingua";
string value = "it-IT"
var options = new CookieOptions
{
IsEssential = true,
Expires = DateTimeOffset.UtcNow.AddYears(1),
};
Response.Cookies.Append(key, value, options);
Vedi anche
Localizzare un applicazione ASP.NET Core.