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