BT

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

por Anand Narayanaswamy , traduzido por Marvin Ferreira em 02 Dez 2013 |

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

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT