4
respostas

Redirecionamento incorreto

Estou com o mesmo problema de outro colega, mas no meu não identifico erros...

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new AutorizacaoFilterAttribute());
        }
    }
    public class AutorizacaoFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            object usuario = filterContext.HttpContext.Session["usuario"];
            if (usuario == null)
            {
                filterContext.Result = new RedirectToRouteResult(
                    new RouteValueDictionary(
                        new { controller = "Login", action = "Index" }
                   )
               );
            }
        }
    }
namespace CaelumEstoque.Controllers
{
    [AutorizacaoFilter]
    public class ProdutoController : Controller
    {

        public ActionResult Index()
        {
            if (GlobalVariables.Produtos.Count <= 0)
                Produto.Init();

            if (GlobalVariables.Categorias.Count <= 0)
                CategoriaDoProduto.Init();

            IList<Produto> produtos = GlobalVariables.Produtos;
            ViewBag.Produtos = produtos;

            return View();
        }

        public ActionResult Visualiza(int id)
        {
            Produto produto = Produto.BuscaPorId(id);
            ViewBag.Produto = produto;
            return View(produto);
        }

        public ActionResult Form()
        {
            if (GlobalVariables.Produtos.Count <= 0)
                Produto.Init();

            if (GlobalVariables.Categorias.Count <= 0)
                CategoriaDoProduto.Init();

            ViewBag.Produto = new Produto();

            IList<CategoriaDoProduto> categorias = GlobalVariables.Categorias;
            ViewBag.Categorias = categorias;
            return View();
        }

        [ValidateAntiForgeryToken]
        [HttpPostAttribute]
        public ActionResult Adiciona(Produto produto)
        {
            int idDaInformatica = 0;
            if (produto.CategoriaId.Equals(idDaInformatica) && produto.Preco < 100)
            {
                ModelState.AddModelError("produto.InformaticaComPrecoInvalido", "Produtos da categoria informática devem ter preço maior do que 100");
            }

            if (ModelState.IsValid)
            {
                Produto.Create(produto);
                return RedirectToAction("Index");
            }else
            {
                ViewBag.Produto = produto;
                IList<CategoriaDoProduto> categorias = GlobalVariables.Categorias;
                ViewBag.Categorias = categorias;
                return View("Form");
            }
        }

        public ActionResult DecrementaQtd(int id)
        {
            Produto produto = Produto.BuscaPorId(id);
            produto.Quantidade--;

            return Json(produto);
        }
    }
}

Alguém poderia me ajudar?

4 respostas

Você registrou "AutorizacaoFilterAttribute" como um filtro global, então nem a página de login pode ser acessada.

Olá Douglas,

Espero que já tenha resolvido, mas era melhor marcar a resposta do Fernando como solucao.

Como ele mencionou, é só voce tirar ou comentar alinha //filters.Add(new AutorizacaoFilterAttribute());como o instrutor fez na video aula

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

Assim voce poderá acessar a página login, uma vez que o filtro nao estará como global.

.

Qual a solução para tirar só o login do filtro global?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software