2012-03-21 16 views
5

Estoy escribiendo un sistema de administración de contenido donde el usuario puede crear múltiples sitios dentro de la aplicación. Cada sitio puede tener autenticación. Estoy intentando descubrir cómo tener múltiples cookies de autenticación para la aplicación sin tener que agregar cada una a web.config. Necesito crearlos programáticamente cuando la aplicación se inicie. es posible?Cómo tener múltiples cookies de autenticación para una sola aplicación programáticamente

Ej.

secureapp: http://localhost/CTMS - Necesidades de autenticación para actualizar los sitios

CustomSite: http://localhost/CTMS/Custom1 - necesidades de autenticación separado de secureapp

Esperamos que esto tenga sentido.

Respuesta

8

Usted puede hacer esto -

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); 

entonces usted puede escribir código para revisar las solicitudes de entrada para ver si tienen esta 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

Después de escribir la pregunta, este es el enfoque que terminé yendo con. ¡Gracias! –

+0

Excelente solución. Lo adopté en una de nuestras aplicaciones MVC 5. – Tommassiov

Cuestiones relacionadas