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.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.
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.