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.
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.