Estoy trabajando en una aplicación que usa ASP.NET MVC 1.0 y estoy tratando de inyectar un objeto IPrincipal personalizado en el objeto HttpContext.Current.User.ASP.NET MVC inyección IPrincipal personalizada
Con una aplicación tradicional de WebForms he utilizado el evento Application_AuthenticateRequest para hacer esto de la siguiente manera.
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is FormsIdentity)
{
// Get Forms Identity From Current User
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
// Get Forms Ticket From Identity object
FormsAuthenticationTicket ticket = id.Ticket;
// Create a new Generic Principal Instance and assign to Current User
SiteUser siteUser = new SiteUser(Convert.ToInt32(id.Name));
HttpContext.Current.User = siteUser;
}
}
}
}
Así que el uso de este pude acceder a mi costumbre IPrincipal por cualquiera de fundición explícitamente el objeto de usuario para escribir SiteUser. De hecho, hice esto teniendo una clase personalizada que todas las páginas heredaban de la cual hice esto bajo las sábanas para mí.
De todos modos, mi problema es que con ASP.NET MVC la Application_AuthenticateRequest parece activarse cada vez que se realiza una solicitud (por ejemplo, para archivos JS, imágenes, etc.) que hace que la aplicación muera.
Cualquier ayuda o sugerencia sobre cómo puedo hacer para inyectar mi IPrincipal personalizado en el objeto HttpContext.Current.User dentro de ASP.NET MVC 1.0 sería muy apreciado. Vi la siguiente publicación en SO, pero no parecía atender a lo que estoy tratando de lograr: ASP.NET MVC - Set custom IIdentity or IPrincipal
TIA.
Eso no debería morir, independientemente del tipo de archivo, ¿qué error estás viendo? – blowdart
Recibo un "golpe" en el método Application_AuthenticateRequest para todos y cada uno de los recursos solicitados. Hace que las páginas rindan dolorosamente lentamente en comparación con las ejecuciones sin el método Application_AuthenticateRequest implementado. El constructor del objeto SiteUser no hace nada particularmente espectacular, solo obtiene los detalles del usuario y la lista de roles del DB. –
Bueno, por supuesto que sí, así es como funciona IIS7 - Creí que se refería a morir con un error – blowdart