NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosNet : Formsauthentication002
Quer receber novidades e e-books gratuitos?

Login e Senha com FormsAuthentication – Parte II

Olá pessoal,

Continuando o nosso tutorial, abra o arquivo WebConfig. Neste arquivo estão gravadas algumas configurações da aplicação.

Vamos agora fazer algumas alterações neste arquivo. Dentro das chaves <system.web> adicione o seguinte trecho de código:

<authentication mode="Forms">

                  <forms name=".ASPXAUTH" protection="All" timeout="60" loginUrl="PaginaDeLogin.aspx" />

            </authentication>

Esta chave de configuração está indicando que o modo de autenticação é via formulário. Também indica  que a sessão durará 60 segundos e que a página usada para autenticar o usuário chama-se PaginaDeLogin.aspx.

A próxima configuração a ser alterada está na chave <authorization>

Devemos mudar este parâmetro para o seguinte:

<authorization>

      <deny users="?" />

</authorization>

Isto está indicando que a princípio todos os usuários sem autenticação não possui acesso a nenhuma página da aplicação. Se você tentar abrir alguma página que não seja a página de login, não conseguirá ter acesso a ela, e automaticamente será redirecionado para a página de login. Caso fosse necessário bloquear todos os arquivos independente da autenticação, usaríamos o seguinte código:

<authorization>

      <deny users="* />

</authorization>

Existe um detalhe importante na nossa aplicação. Não é todo conteúdo que é restrito ao usuário autenticado, criamos uma página que deverá ser vista por todos os usuários sem a necessidade de se autenticar, logo é necessário aplicar uma exceção. Para isso, precisamos alterar mais um trecho do arquivo web.config.

Após o fim da chave </system.web> adicione o seguinte trecho:

<location path="ConteudoLivre.aspx">

            <system.web>

                  <authorization>

                        <allow users="?" />

                  </authorization>

            </system.web>

</location>

Estamos aqui fazendo referência a um caminho da aplicação. Nele podemos utilizar uma autorização exclusiva de acesso. Nesta autorização estamos permitindo (allow) todos os usuários sem autenticação (?) a ter acesso a este caminho.

Então lembre-se: para liberar o acesso use allow e para bloquear use deny. Para todos os usuários autenticados use (*) e para não autenticados use (?). Isto será sempre importante.

Agora que nossa aplicação já está configurada, precisamos criar o código que vai validar o usuário.

Abra o arquivo PaginaDeLogin.aspx

Clique no botão view Code para visualizar o código da aplicação.

Crie a seguinte rotina para a validação do usuário:

Private Sub ValidarLogin(ByVal login As String, ByVal senha As String)

        'Cria a conexão com o banco de dados

        Dim sqlConexao As New SqlConnection("Initial Catalog=tutoriais;data source=master;user id=lano;pwd=1234")

        'Cria o objeto de comando

        Dim sqlComando As New SqlCommand

        'Configurações do objeto de comando

        With sqlComando

            'Conexãi utilizada

            .Connection = sqlConexao

            'Tipo de comando a ser executado

            .CommandType = CommandType.StoredProcedure

            'Nome do Stored procedure

            .CommandText = "_AutenticaUsuario"

            'parâmetros para a execução do Stored procedure

            .Parameters.Add("@Login", SqlDbType.VarChar, 50).Value = login

            .Parameters.Add("@Senha", SqlDbType.VarChar, 50).Value = senha

        End With

        'Leitor de dados

        Dim sqlDr As SqlDataReader

        'Bloco de tratamento de erros

        Try

            'Abre a conexão

            sqlConexao.Open()

            'Anexa o comando ao leitor, indicando que a conexão deverá ser encerrada após a execução

            sqlDr = sqlComando.ExecuteReader(CommandBehavior.CloseConnection)

            'Se encontrar o usuário e a senha

            If sqlDr.Read Then

                'Cria o ticket de autenticação chamado Login

                'O ticket possui persistência, isto é,  usuário poderá voltar a página depois de fechar o browser

                'O tempo de persistência é de 1 minuto

                Dim ticket As New FormsAuthenticationTicket("Login", True, 1)

                'Grava o cookie com o ticket criado

                'É feita a criptografia deste ticket

                Response.Cookies(".ASPXAUTH").Value = System.Web.Security.FormsAuthentication.Encrypt(ticket)

                'Indica a data de expiração do cookie

                Response.Cookies(".ASPXAUTH").Expires = DateTime.Now.AddMinutes(1)

                'Redireciona para a página protegida

                Response.Redirect("ConteudoRestrito.aspx")

            Else

                'Se não encontrar o usuário e a senha

                lblResposta.Text = "Usuário o senha inválido"

            End If

        Catch ex As Exception

            'Caso ocorra algum erro ao abrir ou executar o comando no banco de dados

            lblResposta.Text = "Ocorreu um erro ao executar esta operação!" & ex.Message

        Finally

            'Garante o encerramento da conexão independente do erro

            sqlConexao.Close()

            sqlConexao.Dispose()

        End Try

    End Sub

O código é um pouco extenso, porém simples de entendimento. Primeiramente, criamos a conexão, criamos o objeto de comando e configuramos algumas propriedades. Logo após, configuramos os parâmetros para a execução da Stored procedure.

O grande destaque deste código está está no seguinte trecho:

                Dim ticket As New FormsAuthenticationTicket("Login", True, 1)

                'Grava o cookie com o ticket criado

                'É feita a criptografia deste ticket

                Response.Cookies(".ASPXAUTH").Value = System.Web.Security.FormsAuthentication.Encrypt(ticket)

                'Indica a data de expiração do cookie

                Response.Cookies(".ASPXAUTH").Expires = DateTime.Now.AddMinutes(1)

Este trecho cria um novo ticket. Este ticket é que faz com que o usuário seja considerado válido. Vejam também que gravamos este ticket em um cookie para que a autenticação esteja válida enquanto o usuário navega nas páginas. Também usamos a persistência do ticket para que o usuário consiga entrar na página protegida mesmo depois de fechar o browser.

Para que esta persistência seja válida, configuramos a expiração do cookie para um minuto após a execução do trecho, assim ficará equivalente ao tempo de persistência do ticket.

Agora só precisamos chamar esta rotina no evento click do botão btnEntrar:

Private Sub btnEntrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEntrar.Click

        ValidarLogin(txtLogin.Text, txtSenha.Text)

    End Sub

Vamos testar a aplicação:

Primeiramente vou tentar acessar a página ConteudoRestrito.aspx diretamente:

O resultado foi este:

Fui redirecionado para a página de autenticação.

Agora vou tentar entrar com um login e senha inválido:

Agora vou entrar com um Login e Senha válido:

Vejam que funcionou.

Agora vamos verificar se o cookie foi gravado:

Está aí!

Agora vamos entrar na página AcessoLivre.aspx após expirar o tempo de autenticação , é claro:

Está aí, funcionou perfeitamente!

Experimente fazer, funcionou perfeitamente!

Experimente fazer outros testes e configure sua aplicação de acordo com suas necessidades.

Espero que tenham gostado!

Um abraço,

Lano de Castro

1 Visão geral do .NET Framework e do CLR
1 Comunicação .NET e VB 6.0 (com Visual Studio.NET 2005) - Parte I
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 1
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 2
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 3
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 4
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 5
1 VB: Menu Principal, Menu PopUp e Arquivos Texto
Visual Studio
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control
1 Visual Web Developer - 2005 - Beta 2 - Introdução
1 ASP.NET 2.0 - Conhecendo o GridView
1 ASP.NET 2.0 - Utilizando o GridView e DetailsView
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control - Parte 2
1 ASP.NET 2.0 - Utilizando o XmlDataSource
1 Envio de e-mail através de formulário web
1 ADO.NET 2.0 - Conhecendo as novidades parte 1
1 Série Visual Source Safe - Parte 1
1 Série Visual Source Safe - Parte 3
1 URL Indexável – Reescrever URL de uma forma amigável
1 Permissão de Página Utilizando Web.Config
1 Usando public interface
1 Trabalhando com o componente TabContainer
1 Adicionando Menu no DataGridView
ASP.NET
1 Conhecendo o ambiente integrado do WebMatrix
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte I
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte II
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte III
1 Acessando um banco de dados facilmente com ADO.Net e Datagrid
1 Desvendando os segredos do Dataset- Parte I
1 Construindo um Sistema de Publicação de Notícias – Parte 1
1 Construindo um Sistema de Publicação de Notícias – Parte 2
1 Construindo um Sistema de Publicação de Notícias – Parte 3
1 Construindo um Sistema de Publicação de Notícias – Parte 4
1 Construindo um Sistema de Publicação de Notícias – Parte 5
1 Login com Perfil de Acesso
1 Guest Book com XML - Parte 1
1 Guest Book com XML - Parte 2
1 Agendando Datas no Calendário com XML
1 Filtrando e Organizando Dados com o Controle DataView
1 Lista de Dados com Subitens – Parte 1
1 Lista de Dados com Subitens – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 1
1 Trabalhando com Arquivos e Diretórios – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 3
1 Sistema de Enquetes baseado em WebServices – Parte 1
1 Sistema de Enquetes baseado em WebServices – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 3
1 Upload de Arquivos
1 Crie seu próprio código de verificação
1 Login e Senha com FormsAuthentication – Parte 1
1 Login e Senha com FormsAuthentication – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 4
1 Sistema de Enquetes baseado em WebServices – Parte 5
1 Sistema de Enquetes baseado em WebServices – Parte 6