ASP Básico - Usando cookies para gerenciar logins
Com certeza você já ouviu falar de cookies. Com certeza também já usou cookies em suas navegações pela WEB. Pois vamos falar então de cookies.
Para saber mais sobre cookies leia o meu artigo em : ASP -Gerenciando informações e o ambiente.
Muitos sites exigem que você se registre para poder ter acesso ao conteúdo . Geralmente este registro é gratuito , e, após você se registrar precisa efetuar o login para usar o site. Alguns sites permitem que você configure o seu login como automático. Nesta forma o navegador vai 'memorizar' a sua identificação e assim você não vai precisar digitar seu nome de usuário e sua senha toda vez que for acessar o site. Esta memorização geralmente utiliza cookies.
Vou tentar simular este mecanismo usando criando algumas páginas ASP :
Vamos iniciar com a página de login. O arquivo login.asp contém o script com o código para gerenciar os cookies e o formulário HTML. Abaixo temos o código de login.asp. Estou comentando o código e destacando em linhas azuis.
Nota: Estou usando como linguagem de script o JavaScript.
<%@
LANGUAGE="JAVASCRIPT" %> <% //declara as variáveis que serão usadas na página var nomeusuario=null; var senha=null; var lembrar=null; var destino=null; //Tenta obter um cookie nomeusuario = Request.Cookies("nomeusuario"); //Se o valor retornado for indefinido substitui por null if((""+nomeusuario) == "undefined") nomeusuario = null; //Verifica se existe um destino definido destino = Request.QueryString("destino"); //verifica se o cookie para o nome do usuário esta vazio , se estiver tenta capturar o nome do usuário, a senha e o indicativo para lembrar a senha if((nomeusuario==null) || (nomeusuario=="")) { nomeusuario = Request.Form("nomeusuario"); senha = Request.Form("senha"); lembrar = Request.Form("lembrar"); //aqui estamos permitindo que o login seja efetuado se a senha e o nome forem iguais if((nomeusuario != senha) && !eval("\""+nomeusuario+"\"==\""+senha+"\"")) nomeusuario=null; } // se o nome do usuário e o destino forem indefinidos atribua null if((""+nomeusuario) == "undefined") nomeusuario = null; if((""+destino) == "undefined") destino = null; //se destino for null ou estiver vazio defina para página default : logout.asp if((destino==null) || (destino=="")) destino = "logout.asp"; //Se nome do usuário NÃO for null ou NÃO for vazio então pega ele do cookie if((nomeusuario!=null) && (nomeusuario!="")) { Response.Cookies("nomeusuario")=nomeusuario; //Se lembrar estiver ativo então define uma data de expiração para cookie if(lembrar=="on") { var expire,expireString; var month,year; expire = new Date(); month = expire.getMonth(); year = expire.getFullYear(); if(month == 11) { month = 0; year = year+1; } else { month = month+1; } expire.setMonth(month); expire.setFullYear(year); expireString = expire.toLocaleString(); Response.Cookies("nomeusuario").Expires = expireString; } //direciona o usuário para o destino Response.Redirect(destino); } %> //Aqui temos o formulário com os dados que o usuário deverá informar <html> <head> <title>Gerenciando logins com cookies</title> </head> <body> //Ao clicar no botão Efetuar login será chamado a página login.asp com o parâmetro destino igual ao que for definido no código <form method="POST" action="login.asp?destino=<%=destino%>"> <table border=0> <tr> <td>Nome:</td> <td><input type="text" name="nomeusuario" size=12></td> </tr> <tr> <td>Senha:</td> <td><input type="password" name="senha" size=12></td> </tr> <tr> <td>lembrar Login:</td> <td><input type="checkbox" name="lembrar" value="on"></td> </tr> <tr colspan=2> <td><center><input type="submit" value="Efetuar Login"></center></td> </tr> </table> </form> </body> </html> |
Vamos definir agora a página de logout no arquivo logout.asp. O código é bem simples é dado a seguir :
<%@
LANGUAGE="JAVASCRIPT" %> <% var nomeusuario; // tenta obter o cookie para o usuario nomeusuario = Request.Cookies("nomeusuario"); // se o usuario for indefinido atribui null if((""+nomeusuario) == "undefined") nomeusuario = null; //se foi pressionado o botão de logout ou usuario for null ou vazio define o cookie como vazio e redireciona // o usuário para a pagina de login if((Request.Form("logout") == "logout") || (nomeusuario==null) || (nomeusuario=="")) { Response.Cookies("nomeusuario") = ""; Response.Redirect("login.asp"); } %> <html> <head> <title>Página de Logout</title> </head> <body> //exibe o nome do usuário que se logou e direciona para a página logout.asp Olá , <%=nomeusuario%>. <form method="POST" action="logout.asp"> <input type="submit" value="Logout"> <input type="hidden" name="logout" value="logout"> </form> </body> </html> |
Finalmente a página de teste , teste.asp.
<%@
LANGUAGE="JAVASCRIPT" %> <% var nomeusuario=null; // pega o usuário do cookie nomeusuario = Request.Cookies("nomeusuario"); // se o usuário estiver indefinido atribui null if((""+nomeusuario) == "undefined") nomeusuario = null; // se o usuario for null ou vazio então manda ela fazer o login if((nomeusuario==null) || (nomeusuario=="")) { Response.Redirect("login.asp?destino=teste.asp"); } %> <html> <head> <title>Gerenciando login com cookies</title> </head> <body> Você esta autenticado ! </body> </html> |
Se o usuário indicou que deseja que sua senha e nome fossem 'lembrados' ao acessar a página de teste - teste.asp - ele já estará autenticado.
Para testar os scripts eu usei o Personal Web Server e salvei todos os arquivos na pasta login em c:\inetpub\wwwroot.
Abaixo a sequência de telas indicando um login feito com sucesso e acesso a página de teste:
Aguarde novos artigos sobre ASP básico ...
José Carlos Macoratti