PUBLICIDADE

Autor

rlpa

Rodrigo Araujo

membro deste abril de 2007

Tags

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Google Chrome OS ameaça a liderança do Windows da Microsoft?

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


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");
}

%>

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

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");
}
%>
<html>
<head>
<title>Gerenciando login com cookies</title>
</head>
<body>
Você esta autenticado !
</body>
</html>


Sim   Não   Este código foi útil para você?
NotaComentário
Ainda não foi enviado nenhum comentário.
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.