RSS

ASP.NET MVC – Autenticação básica

19 mar

 

Neste artigo, demonstrarei como podemos restringir o acesso aos nossos Controllers/Views de modo que, apenas os usuários que forem autenticados no sistema possam acessar tais recursos.

Vamos imaginar o projeto com a seguinte estrutura:

 

Na imagem acima podemos observar uma estrutura básica de um projeto em MVC, como contornado na figura, possuímos um Controller chamado PaginaController, que possui 3 métodos que retornam uma ActionResult (Pagina2, Pagina3 e Pagina4).

OBS: Gostou da organização de nosso projeto? Veja como deixá-lo assim aqui.

Ao executar nossa aplicação, o resultado apresentado é o seguinte:

 

Até aqui tudo tranqüilo, porém gostaríamos que apenas os usuários autenticados no sistema pudessem acessar tais menus.

Para tanto, vamos decorar nosso Controller chamado PaginaController com o atributo AuthorizeAttribute.

 

 

Isto define que TODOS os métodos existentes dentro de PaginaController necessitam da autenticação por parte do usuário. Podemos também, defini-lo apenas em alguns métodos ao invés de definirmos no Controller.

Agora, vamos definir o seguinte código em nosso arquivo web.config:

 

 

Definimos acima que, a autenticação do usuário será feita através de um formulário, e este formulário foi definido como /Conta/LogOn. Devemos então, criar um Controller Conta com o método LogOn. Ao final nosso projeto deve estar como abaixo:

 

 

Acima podemos ver que criamos um Controller chamado ContaController, que se responsabiliza apenas por efetuar o Logon e Logoff do usuário.

Esclarecendo como “as coisas funcionam”, quando for realizada uma requisição a qualquer ActionResult que possua o atributo Authorize, como por exemplo o método Pagina2 dentro de PaginaController, é verificado se o usuário está autenticado no sistema, se a resposta for positiva é redirecionado para sua requisição solicitada, ou seja, /Pagina/Pagina2.

Caso o usuário não esteja autenticado, o mesmo é redirecionado para o formulário de autenticação definido no web.config (/Conta/LogOn). Note que, na imagem acima, ao realizar o POST do formulário, é verificado se o login e senha do usuário são respectivamente “rafael” e “123”, para a realização da rotina de autenticação.

Vamos então criar a autenticação do usuário, a forma mais simples é utilizarmos a classe FormsAuthentication localizada dentro no namespace System.Web.Security,  como demonstrado abaixo:

 

 

Observe, utilizamos a rotina SetAuthCookie para criarmos um cookie de autenticação, este método recebe 2 parâmetros: o primeiro é o nome do cookie, e o segundo é se o cookie será persistente, ou seja, mesmo fechando o browser o usuário continua autenticado.

Note também que foi recebido um parâmetro chamado returnUrl, este parâmetro nos mostra qual a requisição que o usuário solicitou, para que seja possível redirecioná-lo após sua autenticação.

Para efetuarmos o Logoff foi utilizado o método SigOut, responsável por remover a configuração de autenticação do usuário.

PRONTO! agora já é possível solicitar a autenticação do usuário quando desejado. Vamos apenas criar uma verificação em nossa Master Page chamada Site.Master para conferir se o usuário esta autenticado ou não, afim de exibirmos um link de LogOn e LogOff, conforme abaixo:

 

 

Para baixar o código fonte do projeto apresentado clique aqui.

Até o próximo artigo!

 

Anúncios
 
4 Comentários

Publicado por em 19/03/2011 em ASP.NET MVC

 

Tags: , , ,

4 Respostas para “ASP.NET MVC – Autenticação básica

  1. Fulvio

    09/08/2011 at 7:19 pm

    Super legal isso ai!
    Parabéns!

     
  2. Rafael Zaccanini

    10/08/2011 at 2:30 am

    tnks Fulvio…

     
  3. icemacs

    22/09/2011 at 3:09 pm

    Rafael
    Tenho uma dúvida, vamos supor que eu tenha um usuário que acabou de se autenticar, mas que a sua primeira ação dentro do sistema seja tentar acessar um determinado controller que ele não tenha permissão (usando o authorize). Não tem como mandar uma mensagem mais amigável pro usuário, tipo “Sem pemissão de acesso”? Ele acabou de se autenticar, acho errado redirecioná-lo pra tela de login novamente.
    Obrigado! 🙂

     

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

 
%d blogueiros gostam disto: