BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias ASP.NET MVC 5: Melhorias de autenticação com filtros

ASP.NET MVC 5: Melhorias de autenticação com filtros

O ASP.NET MVC 5 incluído no recente lançamento do Visual Studio 2013 Developer Preview, permite que os desenvolvedores apliquem filtros de autenticação capazes de autenticar usuários utilizando diversos controles de terceiros ou um controle de autenticação customizado. Entretanto, estes filtros são aplicados antes das chamadas feitas aos filtros de autorização.

Para gerar um filtro de autenticação, é preciso criar um novo projeto C# ASP.NET, selecionando o tipo MVC na lista de projetos apresentados. Eric Vogel, Desenvolvedor de Software Sênior da Kunz, Leigh & Associates, investigou o uso dos filtros de autenticação através de um filtro personalizado, que faz o redirecionamento dos usuários de volta à página de login caso estes não sejam autenticados.

Vogel criou um diretório chamado CustomAttributes e uma nova classe chamada BasicAuthAttribute, que herda de ActionFilterAttribute e IAuthenticationFilter

public class BasicAuthAttribute: ActionFilterAttribute, IAuthenticationFilter

Embora o método OnAuthentication() presente na interface IAuthenticationFilter possa ser usado para executar qualquer autenticação necessária, o método OnAuthenticationChallenge() é usado para restringir o acesso baseado no papel do usuário autenticado.

O método OnAuthenticationChallenge() recebe um argumento AuthenticationChallengeContext, e sua implementação se parece com a demonstrada logo a seguir:

public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
  var user = filterContext.HttpContext.User;
  if (user == null || !user.Identity.IsAuthenticated)
  {
    filterContext.Result = new HttpUnauthorizedResult();
  }
}

O código completo está disponível no post de Vogel em seu blog. A classe BasicAuthAttribute pode ser facilmente testada na classe HomeController, abrindo o arquivo e adicionando a seguinte linha de código:

using VSMMvc5AuthFilterDemo.CustomAttributes;

Por fim, aplica-se o atributo customizado à classe HomeController, como mostrado a seguir:

[BasicAuthAttribute]
public class HomeController : Controller

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT