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 :

  1. Uma página para efetuar o login : login.asp
  2. uma página para efetuar o logout : logout.asp
  3. uma página que exige que seja feito o login para que você possa acessá-la : teste.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