3
respostas

Colocar o filtro global através do FilterConfig

Olá, Minha aplicação funciona apenas com o comentário abaixo no filter, porém gostaria de aplicar o filtro global, quais parâmetros devem ser definidos?

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
           //filters.Add(new AutorizacaoFilterAttribute());
        }
    }
3 respostas

Oi Danilo,

Não sei se entendi a sua pergunta mas para configurar um filtro global você precisa colocar esta linha que você disse acima e registrar os filtros no método que inicia sua aplicação:

protected void Application_Start()
{
   FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
   // resto do código
}

Abraço!

Danilo, resolvi assim:

var controllerName = descriptor.ControllerDescriptor.ControllerName;

object usuarioLogado = filterContext.HttpContext.Session["usuarioLogado"];

if (!controllerName.Equals("Login")) { if (usuarioLogado == null) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary( new { action = "Index", controller = "Login" })); } }

Olá Danilo, a partir da ideia do Paulo eu fiz uma modificação do método que também funcionou.

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.Controller.GetType().Name != "LoginController")
            {
                object usuarioLogado = filterContext.HttpContext.Session["usuarioLogado"];
                if (usuarioLogado == null)
                {
                    filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary(
                            new { action = "Index", controller = "Login" }));
                }
            }
        }