Sì, puoi farlo. Si passa le informazioni codificate nel campo userData del costruttore FormsAuthenticationTicket:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(version,
name, issueDate, expirationDate, isPersistent, yourEncodedData);
string secureTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(
new HttpCookie(FormsAuthentication.FormsCookieName, secureTicket));
Idealmente, questo dovrebbe essere fatto su una connessione SSL, e il cookie biglietto deve essere contrassegnato con entrambe le HttpOnly e sicuro attributi.
Poi, per recuperare il valore:
FormsIdentity id = (FormsIdentity)User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
string yourEncodedInfo = ticket.UserData;
Si potrebbe anche solo impostare il proprio biscotto, separato dal biglietto di forme di autenticazione.
Tuttavia, memorizzare una password direttamente in un cookie, anche se crittografato, non è una buona idea dal punto di vista della sicurezza. Invece, utilizzare lo stato di sessione:
Session["password"] = password;
stato sessione usa anche un cookie, ma il cookie in sé contiene solo una chiave. Il server utilizza la chiave per ottenere un dizionario di coppie chiave/valore univoche per quella sessione, che rimangono sul server (o vengono serializzate sul DB, a seconda di come è configurato).
Devo salvarli nello stato sessione in quanto l'utente è stato autenticato per la prima volta? Come si assicura che la sessione di iscrizione scada contemporaneamente allo stato della sessione? Avrei bisogno che restino sincronizzati, credo. –
@metalideath - Sì, memorizzali non appena possibile. Se la sessione termina, sia dall'utente che cancella i propri cookie (e quindi perdendo qualsiasi riferimento alla propria sessione), sia che il server termini la sessione, sarà necessario autenticare nuovamente l'utente e ripristinare di nuovo la password nella sessione. – Omar
Lo stato della sessione funziona in un ambiente con più server? –