ASP.NET - Criando um formulário de Login
Aqui
estou eu , em mais um artigo sobre ASP.NET. Se você esta pensando que estou
abandonando o VB.NET , esta enganado . Se olhar bem o código que eu estou usando
nas páginas ASP.NET é VB.NET.
Além do mais não há
como separar um coisa da outra esta tudo interligado. Então você leva dupla
vantagem ao estudar VB.NET : cria suas aplicações em Desktop e usando o
mesmo conhecimento também cria poderosas aplicações para Web.
Então para enriquecer mais ainda o seu já vasto cabedal de conhecimentos sobre VB.NET e ASP.NET vou mostrar como você pode criar um formulário de login para permitir que somente os usuários autorizados por você tenham acesso ao seu site. No artigo Trabalhando com Controles e Web Forms - II eu mostrei como usar os controles de validação para você criar um formulário de login usando o Visual Studio.NET ; neste artigo eu pretendo ir um pouco mais além. Vou mostrar como fazer a validação de chaves e senhas gravadas em um banco de dados Access em um formulário ASP.NET.
O formulário de login será exibido na primeira vez que qualquer usuário acessar o site e ele terá que se autenticar informando chave e senha. O site é um bolão sobre as corridas de formula 1 que eu estou fazendo para mostrar algumas funcionalidades da ASP.NET.
Vamos ter que acessar um banco de dados e verificar se a chave e a senha informadas estão cadastradas. A primeira coisa a fazer então e criar um banco de dados e uma tabela onde iremos guardar as informações dos usuários/clientes. Eu criei o banco de dados BolaF1.mdb e a tabela Participantes com a seguinte estrutura:
![]() |
O
banco de dados BolaoF1.mdb esta presente no diretório d:/inetpub/wwwroot/dados
na minha máquina local. Você pode colocar o banco de dados em qualque diretório virtual que tenha criado para trabalhar com ASP.NET. |
Existe um funcionalidade interessante no formulário de login ; o sistema irá verificar se este é o primeiro login feito pelo usuário e em caso positivo irá direcionar o usuário para alterar sua chave e senha. Isto somente vai ocorrer no primeiro login.
Vamos
agora mostrar a cara do formulário de login , que eu chamei de default.aspx .
Para acessar o formulário você deve ter o IIS instalado e funcionando . Veja o
artigo -
ASP.NET - Instalando e
Configurando o Internet Information Services - IIS. - para maiores detalhes.
Na minha máquina os arquivos do projeto foram colocados na pasta
c:\inetpub\wwwroot\f1. Eu estou
usando o bloco de notas para digitar o código VB.NET e código HTML dos
arquivos aspx.
Veja na figura abaixo a aparência da página default.aspx :
|
- No
formulário temos os seguintes controles : - Uma imagem gif - exibida via código abaixo: <img border="0" src="senn7.gif" width="300" height="178"> - dois controles TextBox e um controle Button declarados conforme código abaixo :
|
Vou mostrar o código da página a seguir para você não ficar muito curioso e por que eu estou com sono , amanhã eu volto a explicar o código em detalhes: Código da página default.aspx :
<%@ Page Language="VB" Debug="true"
%>
Function CripSenha(strSenha As String) As String
End Function
End Sub
</asp:placeholder> |
Você pode acessar a página em : http://www.visualbasic.mat.br/f1/default.aspx .
Como funciona ?
1- Definimos a string de conexão para acessar o base de dados BolaF1.mdb informando o caminho completo.
Dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=d:/inetpub/wwwroot/dados/BolaoF1.mdb"
Como estamos fazendo uma conexão com uma base de dados Access usamos um provedor OLE DB.
2- A instrução SQL seleciona no banco de dados o usuário com a chave e senha informados :
Dim MySQL as string = "Select
CodigoParticipante , NomeParticipante , Chave , Senha , primeirologin from
Participantes Where Chave = '" & lguid.text & "' and Senha = '" & lgPWD.text
& "'"
3- Definimos a seguir a conexão e criamos um objeto Comando na conexão criada
Dim MyConn as New OleDbConnection(strConn)
Dim Cmd as New OleDbCommand(MySQL, MyConn)
4- Abrimos a conexão e a seguir executamos o comando para gerar um DataReader com os dados selecionados. Note que o parâmetro usado fecha a conexão em seguida.
MyConn.Open()
objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection)
5- Verificamos se o objeto DataReader está vazio , se isto ocorrer , informamos que a chave/senha são inválidos , caso contrário atribuímos os campos NomeParticipante, CodigoParticipante e primeirologin as variáveis pré-definidas.
if Not objDR.Read() then
label1.text = "<h1><b>Chave / Senha Inválidas !</b></h1></p>"
objDR.Close
Myconn.Close
else
objDR.close
Myconn.Open
While objDR.Read()
strNome=objDR("NomeParticipante")
intCode=objDR("CodigoParticipante")
bprimeirologin=objDR("primeirologin")
End While
Session("Codigo")=intCode
Session("nome")=strNome
...
6- A seguir verificamos se é o primeiro logon que o usuário faz . A variável bprimeirologin informa isto. Se for o primeiro logon chamamos a página cadastra.aspx para que o usuário altere sua senha.
if bprimeirologin then
response.Redirect("http://localhost/f1/cadastra.aspx")
else
response.Redirect("http://localhost/f1/f1.htm")
end if
Observe que estamos usando a função CripSenha para ofuscar a senha , assim a senha salva no banco de dados fica um pouco mais protegida. É claro que esta proteção é relativamente fácil de quebrar mas é melhor do que salvar a senha diretamente como foi digitada.
Function CripSenha(strSenha As String) As String
End Function |
A mesma rotina gera a senha criptografada e é usada para ler a senha do banco de dados. Acessa a página de Login em : http://www.macoratti.net/f1/default.aspx .
Eu cadastrei dois usuários : Macoratti e Convidado cujas chaves e senhas são : macoratti/123456 e guest/123456.
Você terá acesso ao site que simula um bolão de formula1. As opções estão ativas mas eu não testei todas ainda. Você poderá incluir aposta , alterar sua aposta , ver sua aposta e ver a aposta do grupo ( somente os dois usuários cadastrados ).
Estarei falando com mais detalhes do site em futuros artigos. Entre no site e divirta-se...
Até
mais o próximo ASP.NET...