ASP NET – Action Filters – MVC – C#

Publicado: 23 de maio de 2015 em C#

Na grande maioria das vezes é útil utilizar filtros em nossas aplicações para que possamos especificar determinados tipos de regras para acesso as nossas páginas ASP.NET. Os filtros em ASP.NET se encontram em vários lugares diferentes como por exemplo o filtro que manipula erros que pode ser localizado na pasta App_Start na classe FilterConfig, este é um lugar para se configurar os filtros globais para toda a aplicação. Por outro lado as vezes necessitamos de filtros mais específicos como filtros que podem ser aplicados em um controlador inteiro ou somente em determinadas ações de um controlador. Para isto o ASP.NET MVC nos proporciona alguns atributos que nos permitem filtrar determinadas ações sobre os controladores, eles são:

  • OutputCacheRepresenta um atributo que é usado para marcar um método de ação cuja produção será armazenada em cache.
  • ValidadeInputRepresenta um atributo que é usado para marcar os métodos de ação, cuja entrada deve ser validada.
  • AuthorizeEspecifica que o acesso a um método de controlador ou ação é restrita a usuários que atendem ao requisito de autorização.
  • ValidateAntiForgeryTokenRepresenta um atributo que é utilizado para prevenir a falsificação de um pedido.
  • HandleErrorRepresenta um atributo que é usado para tratar uma exceção que é lançada por um método de ação.

Ao longo dos posts vamos utilizar vários filtros de ações, por enquanto para entender sua funcionalidade, vamos apenas utilizar o filtro de autorização em sua forma mais básica.

Authorize: https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.118).aspx

Usando Filtros de Ação

1 – Crie uma aplicação ASP.NET MVC usando o Template padrão. Crie um novo controlador e uma nova rota usando os códigos abaixo e rode sua aplicação:

ASP.NET MVC - Home

ASP.NET MVC – Home

2 – Use ou comente o atributo de autorização no controlador e na ação para ver seu resultado. O atributo de autorização sem nenhum tipo de parâmetro necessita que o usuário esteja autorizado através de um login na aplicação. Como ainda não utilizamos a tela de login do Template você será redirecionado a esta tela assim que tentar acessar o seu controlador ou ação. Digite o nome do seu controlador (Programas) na URL manualmente para tentar acessa-lo:

MVC - Autorização

MVC – Autorização

Exemplo:

Neste exemplo criamos um controlador e uma rota. Utilizamos um filtro de ação para que o usuário seja obrigado a estar autorizado a usar o controlador ou ação para acessar seu conteúdo.

C#

Rota

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MeuMVC
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            // Cria uma nova rota para o controlador

            // Define controlador e parâmetros
            routes.MapRoute("Programas", "programas/{linguagem}",
                new { controller = "Programas", action = "Indice", 
                    
                    // Parâmetro opcional
                    linguagem =  UrlParameter.Optional
                     
                });

            routes.MapRoute(
                name: "Default", 
                
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

Controlador

using MeuMVC.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MeuMVC.Controllers
{
    // Você pode utilizar um filtro de ação no nivel do controlador
    // ou de qualquer ação de um controlador

    // Comente ou não o código abaixo para mudar a restrição para o nivel do controlador
    // [Authorize]
    public class ProgramasController : Controller
    {
        // Utiliza parâmetro diretamente na ação definida na rota.
        // A autorização faz com que o acesso seja restringido a certos usuários ou regras.

        // Comente ou não o código abaixo para mudar a restrição para o nivel da ação
        [Authorize]
        public ActionResult Indice(string linguagem)
        {
            // Exibe Mensagem
            var mensagem = "Linguagem: " + Server.HtmlEncode(linguagem);                          
            
            return Content(mensagem);
        }   
       
    }
}

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s