Je suis à la recherche de conseils sur les cookies dans ASP.Net MVC (ou simplement sur la gestion des cookies en général). J'ai stocké des informations d'authentification sur les utilisateurs qui s'authentifient via un formulaire de connexion dans un cookie. Cela fonctionne très bien, mais j'ai maintenant besoin de stocker un peu plus d'informations dans le cookie. Cette information supplémentaire n'est pas vraiment "liée à l'authentification" donc j'hésite à la stocker dans le ticket d'authentification. Y a-t-il une meilleure pratique pour stocker des informations supplémentaires. Est-il possible de définir plusieurs cookies (et si c'est le cas une bonne/mauvaise pratique)? D'autres choses que je devrais considérer ici?Meilleures pratiques concernant les cookies MVC d'ASP.Net
Voici le code actuel que je utilise pour régler le ticket d'authentification et l'envelopper dans un cookie:
private HttpCookie GetAuthCookie(AuthToken authToken)
{
var authTokenXml = serializationService.Serialize(authToken);
var authCookieString = FormsAuthentication.Encrypt(
new FormsAuthenticationTicket(
0,
Keys.AuthToken,
DateTime.Now,
DateTime.Now.AddMinutes(AppSettings.SessionTimeoutMinutes),
true,
authTokenXml));
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, authCookieString)
{
Expires = DateTime.Now.AddDays(AppSettings.AuthCookieExpireDays)
};
return cookie;
}
Oui, j'ai envisagé d'utiliser l'état de session SQL Server comme alternative à l'approche de cookie. Les données supplémentaires que j'ai besoin de stocker sont petites (probablement 20 caractères), donc il ne devrait pas ajouter trop de surcharge sur le fil ou en termes de taille de cookie. J'espérais éviter d'utiliser une base de données uniquement pour stocker cette information supplémentaire, à moins que ce ne soit vraiment la meilleure pratique, et c'est pourquoi j'ai posé la question ici. Merci pour vos commentaires. – Paul
si ce n'est que 20 caractères, il ne fait probablement pas de mal dans le cookie. Si c'est si petit, utiliser la session in proc pourrait aussi être un bon choix. Peut-être essayer les deux façons et voir ce qui est préférable? –