Tengo un reemplazo para el controlador que comprueba si existen ciertos datos de sesión. Esta información es necesaria para que el repositorio funcione correctamente, por lo tanto, si no existe, después de la verificación el usuario debe cerrar la sesión.Redirigir desde el controlador Inicializar no funciona
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if (Session["CompanyID"] != null)
{
repo.CompanyID = (long)Session["CompanyID"];
}
else
{
RedirectToAction("LogOff", "Account");
}
}
Mi código es el siguiente, pero incluso cuando se invoca el RedirectToAction el controlador todavía se abre la acción predeterminada y el usuario no está dado de baja. ¿Puede recomendarnos cómo manejar este problema?
Estoy utilizando esta información de sesión de tal manera porque este es el primer lugar que puedo conocer y aquí puedo verificar si existe esta información en particular. Se escribe cuando el usuario inicia sesión.
Estos datos forman parte del usuario en la base de datos. Creé una membresía personalizada y un proveedor de roles. ¿Hay alguna manera de agregar estos datos a "Usuario" de MembershipUser de alguna manera para que se pueda acceder en el constructor como usuarios?
Entiendo el principio, pero parece un poco poco práctico. No puedo convertirlo en un filtro global ya que hay áreas públicas de aplicación, y luego tengo que aplicarlo a cada acción que se encuentre dentro del área que lo requiera. ¿Hay alguna otra manera de interrumpir la carga del Controlador después de inicializarlo y enviarlo a otra acción de otro Controlador? – Zaak
Puede aplicar el atributo a un controlador, y se aplicará para cada acción dentro de ese controlador, o una clase base de controlador y luego la acción se aplicará para cada acción de clases derivadas también. –
Hmm, de esta manera todavía no aborda el hecho de que tengo que configurarlo una vez. Parece que hacer cosas a través de FilterAttribute de esta manera lo establecería cada vez que una acción se ejecute en su lugar solo cuando se crea una instancia del controlador? – Zaak