4
respostas

FilterGlobal

Foi dito que dá para fazer o filtro global para não ficarmos assinando o AutorizacaoFilter em todas as actions, porém eu não entendi como se faz para excluir o controller login. Sendo que no video simplesmente se comenta a linha e parte para frente.

4 respostas

Helton, Tudo bem?

Eu fiz este curso presencial, se o projeto for exatamente igual, basta colocar uma annotation [AllowAnonymous] na classe controller que deve permitir o acesso.

No meu projeto ficou: LoginController.cs

namespace BlogWeb.Controllers
{
    [AllowAnonymous]
    public class LoginController : Controller
    {
...

Abs!

[AllowAnonymous] só funciona para o [Authorize]. No caso desse curso, realmente não é explicado como fazer...

Pelo que vi, é necessário fazer uma customização do código do filtro para excluir os controllers que você não quer que o filtro seja aplicado. Provavelmente deve existir uma maneira melhor de fazer isso, porém assim que consegui fazer funcionar. Segue o código abaixo:

public class AutorizacaoFilterAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { Object usuario = filterContext.HttpContext.Session["usuarioLogado"]; var descriptor = filterContext.ActionDescriptor; var controllerName = descriptor.ControllerDescriptor.ControllerName; if (!controllerName.Equals("Login")) { if (usuario == null) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary( new { controller = "Login", action = "Index" } ) ); } } } }

Valeu Rodrigo, tive o mesmo problema.