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: PrincipalTutoriaisLanodecastro : Formsauthentication002
Quer receber novidades e e-books gratuitos?

FILTRO DE TUTORIAIS:


 

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

 

Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2025 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI