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:

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...

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

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

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

(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”.

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

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

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

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:

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:

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:

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.

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.

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

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