Fernando Gonçalves Blog destinado a assuntos sobre a plataforma Microsoft .Net

12jul/100

Autenticando usuários em ASP.NET Web Forms

Tenho visto muitas perguntas sobre como podemos implementar a autenticação em ASP.NET sem a utilização dos controles da Toolbox Login.

Por esse motivo resolvi escrever este post onde demonstrarei como é simples criar o processo de autenticação de usuários em uma aplicação ASP.NET com pouquíssimas linhas de código.

Como de costume o primeiro passo é abrir o Visual Studio. Vou utilizar o Visual Studio 2010, mas fique a vontade para utilizar qualquer outra versão, pois o código será exatamente o mesmo.

Com o Visual Studio aberto clique em File | New | Project e selecione Visual C# | Web conforme imagem abaixo:

Imagem1

Na caixa Name coloque o nome do projeto. No meu caso estou chamando o projeto de “AutenticandoUsuarios”.

Com o projeto criado vamos expandir a guia “Solution Explorer”. Clique com o botão direito no nome do projeto e selecione Add | New Item...

Imagem2

Na janela que se abre adicione um Web Form com o nome de Login.aspx.

Imagem3

Repita o mesmo processo e adicione mais um Web Form com o nome de Default.aspx.

Imagem4

Nesse momento seu projeto deve ter uma estrutura muito parecida com a imagem abaixo:

Imagem5

(Se você estiver utilizando outra versão do Visual Studio pode existir uma pequena diferença entre os arquivos).

Vamos definir que o arquivo Default.aspx é o arquivo padrão da nossa aplicação. Ou seja, sempre que o usuário acessar o nosso site ele será redirecionado para a tela Default.aspx.

Para isso, clique com o botão direito no arquivo Default.aspx e clique em seguida seleciona a opção “Set As Start Page”.

Imagem6

De um duplo clique sobre o arquivo Default.aspx e digite o seguinte código:

Imagem7

De um duplo clique sobre o arquivo Login.aspx e adicione o código abaixo:

Imagem8

Agora vamos executar a aplicação e veremos que a janela Default.aspx será exibida.

Imagem9

Até este ponto não há nenhuma novidade para quem já esta familiarizado com o ASP.Net.

Vamos agora informar a nossa aplicação que qualquer tela do sistema só poderá ser acessada se anteriormente o usuário tiver sido autenticado. Para isso pare a execução da aplicação e clique duas vezes sobre o arquivo Web.config.

Com o arquivo Web.config aberto adiciona a tag “<authentication>” conforme a imagem abaixo:

Imagem10

Reparem que dentro da tag Authentication temos o campo mode que aceita somente os valores exibidos na imagem acima.

Vamos as definições de cada um dos possíveis modos de autenticação aceitos pelo ASP.Net.

Forms: Permite que você customize uma janela onde você deverá implementar a sua lógica de validação para autenticar um determinado usuário. “Utilizaremos este modelo em nosso exemplo mais abaixo”.

None: Identifica que todos os usuários poderão acessar a sua aplicação. Por exemplo, um site de notícias onde todos podem navegar sem a necessidade de efetuar uma autenticação.

Passport: Com este modo é possível integrarmos nossa aplicação com a tela padrão da Microsoft de forma que a validação será feita através do LiveID da Microsoft e receberemos apenas um token de autenticação, porem não temos acessos ao e-mail e senha utilizados para logar no LiveID.

Windows: Permite que sua aplicação identifique as credenciais do usuário logado no Windows (máquina local do cliente) e as utilize para logar na aplicação. Desta forma é possível que o usuário acesse sua aplicação, porem sem a necessidade de ter de informar seu usuário e senha novamente.

Para o nosso exemplo vou utilizar o modo Forms. Agora dentro da tag Authentication vamos adicionar a tag formsconforme o exemplo abaixo:

Imagem11

Vamos às definições de cada um dos valores que definimos na imagem acima:

name: Nome do cookie que será utilizado pelo ASP.NET para armazenar as informações do usuário logado.

loginUrl: Nome da pagina que contem a lógica que controlará a autenticação dos usuários do site.

defaultUrl: Nome da pagina inicial da sua aplicação

timeout: Tempo em minutos que o cookie é persistido. Se você ficar mais tempo do que o aqui definido sem interação com a aplicação, você será redirecionado novamente para a tela definida no parâmetro loginUrl.

path: Identificador de qual diretório da aplicação deve receber a proteção quanto ao acesso sem a devida autenticação.

Após o fechamento da tag authentication vamos adicionar o código abaixo:

Imagem12

Com o código acima estamos negando o acesso a qualquer página da nossa aplicação aos usuários não autenticados.

Sempre que o ASP.NET identificar que o usuário não esta autenticado, o ASP.NET utilizará os parâmetros definidos dentro tag authentication para redirecionar o usuário a página definida como página responsável pela autenticação dos usuários.

No nosso exemplo a página responsável pela autenticação é a pagina Login.aspx.

Vamos executar a nossa aplicação para verificarmos o que acontece. Vejam que ao invés de abrir a janela Default.aspx, a janela aberta foi a janela Login.aspx. Porem reparem no conteúdo da url que foi montado no browser.

Imagem13

Conforme podemos ver o ASP.NET nos redirecionou para a janela Login.aspx, mas identificando que após a validação com sucesso, devemos ser redirecionados para a janela Default.aspx.

Agora nos resta apenas implementar o código responsável por autenticar o nosso usuário na aplicação. Para isso devemos voltar ao designer da janela Login.aspx e vamos adicionar um controle Button.

Imagem14

No evento o Click do controle Button vamos implementar o código abaixo:

Imagem15

Se neste momento executarmos novamente nossa aplicação, seremos redirecionados para tela de login. Porem se clicarmos no botão “Efetuar o login” seremos redirecionados para a janela Default.aspx de forma automática.

Pronto... Estamos autenticados e agora temos acesso às demais páginas da aplicação.

O projeto completo pode ser baixado aqui.

Espero que tenham gostado do artigo. Participem nos comentários.

Aprofunde seus conhecimentos sobre esse tema na comunidade ASP.NET

[]’s,
Fernando Gonçalves

Comentários (0) Trackbacks (0)

Sem comentários


Deixar um comentário


Sem trackbacks