2012-03-21 3 views
5

Sto scrivendo un sistema di gestione dei contenuti in cui l'utente può creare più siti all'interno dell'applicazione. Ogni sito può avere l'autenticazione. Sto cercando di capire come avere più cookie di autenticazione per l'app senza doverli aggiungere a web.config. Devo crearli a livello di codice all'avvio dell'applicazione. È possibile?Come disporre di più cookie di autenticazione per una singola app a livello di programmazione

Es.

SecureApp: http://localhost/CTMS - ha bisogno di autenticazione per aggiornare siti

CustomSite: http://localhost/CTMS/Custom1 - ha bisogno di autenticazione separato dal SecureApp

Speriamo che questo ha un senso.

risposta

8

È possibile farlo -

FormsAuthenticationTicket _ticket = new FormsAuthenticationTicket(_version, _name, _issueDate, _expirationDate, _isPersistent, _userData, _cookiePath); 

string _encryptedTicket = FormsAuthentication.Encrypt(_ticket); 

HttpCookie _cookie = new HttpCookie("customticket", _encryptedTicket); 

HttpContext.Current.Response.Cookies.Add(_cookie); 

Quindi è possibile scrivere codice per controllare le richieste in arrivo per vedere se hanno questo cookie -

HttpCookie _cookie = HttpContext.Current.Request.Cookies["customticket"]; 

if(_cookie){ 

_encryptedTicket = _cookie.Value; 
FormsAuthenticationTicket _ticket = FormsAuthentication.Decrypt(_encryptedTicket); 

    if(!_ticket.Expired) { 
     IIdentity _identity = new FormsIdentity(_ticket); 
     IPrincipal _principal = new GenericPrincipal(_identity, new string[0]); //Identity plus string of roles. 
    } 
} 
else{ 
//dostuff 
} 
+0

Dopo aver scritto la questione, questo è l'approccio che ho finito andando con. Grazie! –

+0

Ottima soluzione. L'ho adottato in una delle nostre applicazioni MVC 5. – Tommassiov