Je suis en train d'implémenter une fonctionnalité "remember me" en utilisant ASP.NET MVC. Il utilise un processus d'authentification personnalisé tel que défini ci-dessous.asp.net mvc authentification cookie question
Web.config:
<authentication mode="Forms">
<forms loginUrl="/Account/Login" defaultUrl="/Home/MyAccount" timeout="43200"/>
</authentication>
Code pour persistent cookie:
public void SignIn(string userName, bool createPersistentCookie) {
int timeout = createPersistentCookie ? 525600 : 120; // Timeout in minutes, 525600 = 365 days.
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(userName, createPersistentCookie, timeout);
string encrypted = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
cookie.Expires = System.DateTime.Now.AddMinutes(timeout);
HttpContext.Current.Response.Cookies.Add(cookie);
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
}
code pour récupérer cookie:
if (System.Web.HttpContext.Current.Request.Cookies.AllKeys.Contains(FormsAuthentication.FormsCookieName)) {
cookie = System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
}
Le code vérifie en cours pour la session d'authentification. Je voudrais également ajouter la possibilité d'obtenir le nom d'utilisateur du cookie. J'ai 2 questions:
- Que dois-je faire pour récupérer le cookie?
- Comment décrypter le cookie pour obtenir le nom d'utilisateur?
Cheers,
Dean
Merci, ça fonctionne très bien. J'ai également réalisé que j'avais besoin de supprimer le code FormsAuthentication.SetAuthCookie (userName, createPersistentCookie); – Dean