2017-10-04 2 views
-1

Je souhaite enregistrer l'ID utilisateur une fois l'authentification par formulaire effectuée par courrier électronique et mot de passe. J'utilise actuellement une session pour le faire; Cependant, la session et l'authentification par formulaire ont des délais d'attente différents et parce que la session est une variable de type serveur lorsqu'un utilisateur est connecté si je me connecte avec un nom d'utilisateur différent sur une autre machine, la session change simplement de valeur. problème majeur. En plus de la mise en cache, y a-t-il un autre moyen de l'accomplir?Identifiant du magasin après authentification Formulaires Web ASP

Répondre

0

Vous pouvez stocker l'ID utilisateur dans le cookie d'authentification étendue. Sur autorisation de routine Compose cookie sur mesure et l'ajouter à la réponse:

var ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(60), false, userId.ToString())); 
HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)) { HttpOnly = true }); 

Vous pouvez déchiffrer ce cookie pour authentifier la demande et savoir ce qui était ID utilisateur:

HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName]; 
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 
int iserId = int.Parse(authTicket.UserData);