Categorias

Usando cookies para gerenciar logins

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.

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.

Arquivo: login.asp
<%@ 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


Gerenciando logins com cookies


//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
Nome:
Senha:
lembrar Login:
Arquivo: logout.asp <%@ 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"); } %> Página de Logout //exibe o nome do usuário que se logou e direciona para a página logout.asp Olá , <%=nomeusuario%>.
Arquivo: 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"); } %> Gerenciando login com cookies Você esta autenticado !