3
respostas

E quanto ao filtro global?

E como fazemos para utilizar o filtro global na aplicação, sem termos problemas com a página de Login? Isso não ficou explicado no vídeo...

3 respostas

Olá, Lucas!

Você pode criar um atributo especial para ignorar o atributo global:

public class IgnoraAutorizacaoFilterAttribute : Attribute
{
}

Já no atributo global, você teria que fazer uma modificação para verificar se a action deve ou não ignorar o atributo global:

public class AutorizacaoFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.ActionDescriptor.GetCustomAttributes(typeof(IgnoraAutorizacaoFilterAttribute), false).Any())
        {
            return; // se é para ignorar o atributo global, retorna sem fazer nada
        }

        // aqui vai o código que executa a action global
    }
}

Para ignorar a action global, adicione a anotação com esse atributo:

[IgnoraAutorizacaoFilter]
public ActionResult Index()
{
    return View();
}

Boa sorte e bons estudos!

Olá,

Muito obrigado pela resposta. Agora consigo acessar a página de Login, mas quando autentico, a aplicação fica voltando em loop para a página de Login, aparentemente nem chamando a action de autenticação. Como posso prosseguir daqui?

Obrigado,

Lucas

Olá Marcelo,

Consegui fazer a autorização. Para isso precisei marcar o método da action Autentica também com o atributo para ignora o filtro. Além disso, não adiantou marca a classe toda do LoginController com este atributo, pois ela se comporta como se não houvesse o atributo. Sabe me explicar o porquê?

Obrigado,

Lucas