Estoy tratando de crear un HttpModule personalizado que controle qué usuarios pueden ver un sitio.¿Cómo interactuaría un HttpModule para Autenticación personalizada con la Autenticación de Windows?
Estoy tratando de aprovechar la Autenticación de Windows para hacer esto.
En una página individual, probablemente hacer algo como esto:
if (HttpContext.Current.User.Identity.Name.Contains("jsmith"))
{
Response.Write("You do not have the correct permissions to view this site.");
Response.End();
}
Pero porque quiero hacer esto más configurable a nivel de aplicación, me gustaría utilizar un HttpModule.
Aquí es el principio que he hecho en el código:
using System;
using System.Web;
public class CustomAuthHttpModule : IHttpModule
{
public void Dispose() { }
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(OnBeginRequest);
context.EndRequest += new EventHandler(OnEndRequest);
}
void OnBeginRequest(object sender, EventArgs e) { }
void OnEndRequest(object sender, EventArgs e)
{
HttpApplication appObject = (HttpApplication)sender;
HttpContext contextObject = appObject.Context;
if (contextObject.User.Identity.Name.Contains("jsmith"))
{
contextObject.Response.Clear();
contextObject.Response.End();
}
}
}
que estaría bien con el uso del código que tengo, si pudiera ponerlo en la función OnBeginRequest(). Pero la propiedad User no se crea en el objeto HttpContext hasta que se ejecuta OnEndRequest().
Ejecutar el código antes evitaría que la aplicación haga el trabajo adicional de producir esta salida, ya que al final algunos usuarios van a estar bloqueados.
¿Alguien puede sugerir una solución a esto? ¿Esto sucede porque mi módulo se está ejecutando antes del módulo de autenticación de Windows, o qué?
... o, tal vez hay una manera más fácil de hacer lo que estoy tratando de hacer con IIS o permisos del sistema de archivos?
¿Hay alguna razón usted no acaba de dejar IIS hace esto para usted? O use las funciones '' en su web.config? –
CodingGorilla
¿Puedes explicar a qué te refieres? Buscaré las características de para ver de qué estás hablando allí. ¿Cómo IIS "haría esto por mí"? –
vwfreak
''! Increíble. Marcaría esto como la respuesta si hubiera sido uno y no un comentario. ¡Gracias! –
vwfreak