In questi giorni sto lavorando ad un controllo per l'autenticazione dell'utente in .NET. Ci sono però alcuni chiarimento che voglio chiedervi.
Sin dai tempi dell'ASP al momento dell'autenticazione non mi limito a tenere in memoria il nome dell'utente ma ho bisogno di altre informazioni quali id, mail, ruolo più altre informazioni relative a decisioni prese dall'utente durante la navigazione. In ASP creavo quindi una sessione con all'interno un array in cui inserivo tutte queste informazione che poi modificavo e richiamavo a piacimento.
In ASP.NET il ticket di autenticazione standard tiene conto solo del nome utente, quindi ho dovuto usare un ticket personalizzato dove all'interno del campo UserData ho inserito le altre informazioni.
Il mio dubbio è: se l'autenticazione ASP.NET è basata sui cookie allora presenta grossi limiti rispetto alla vecchia autenticazione ASP. Mi riferisco alla quantità di informazioni che posso memorizzare e soprattutto al fatto che devono essere necessariamente di tipo string (addio quindi al mio tanto comodo array).
Non è forse meglio allora passare al ticket solo l'ID e poi recuperare i dati tramite l'ID e tornarli ad inserire in una variabile di sessione? Senza contare che alcuni dati che voglio mantenere in memoria cambiano a seconda del comportamento dell'utente durante la navigazione, ma mentre modificare un array in una sessione è cosa da poco, modificare lo UserData è cosa ben più lunga (ricreare il cookie, raggiungerlo alla collezione del browser, ...).
Vi chiedo un'ultima cosa che fatico a capire: se le variabili di sessione sono basate sui cookie, tant'è che se sono disabilitati i cookie ogni nuova richiesta crea una nuova sessione con relativa perdita di dati, perché in una sessione posso memorizzare anche un dataset mentre nei cookie solo stringhe di pochi caratteri?
Ciao e grazie