Sessions para WebBroker - Parte I
Serialize usuarios em aplicações Web, neste artigo de Emerson Facunte. Acesso exclusivo para Assinantes.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Sessions para WebBroker
Serialize usuarios em aplicações Web
Salve, salve Delphianos!
Neste pequeno artigo demonstrarei algumas técnicas para criação de Sessions para aplicações baseadas em WebBroker.
Mas para que servem as Sessions? Uma resposta curta e grossa: serializar usuários em aplicações Web! Xiiiiiii Facunte, agora piorou, explique melhor!?
Vejamos dois exemplos:
e-Commerce
Serializamos clientes através de Sessions, onde todas as ações devem ser controladas, como adição de produtos no carrinho de compras, processo de identificação e pagamento.
Veja o esquema:
Internauta entra na loja virtual e recebe uma sessão única: A01-FF1

Internauta escolhe produto e coloca na sua cesta. Sua cesta possui a mesma identificação da sessão: A01-FF1

Internauta entra na área de identificação e o sistema vincula seu cadastro à sessão: A01-FF1

Internauta finaliza processo de compra, e o sistema identifica suas opções através da sessão: A01-FF1
iBanking
Utilizada no processo de identificação do cliente, bem como em todas as ações realizadas durante a sessão (transferência entre contas, pagamentos, extrato, etc).
Cliente entra no site do banco e recebe uma sessão única: BBC-AAX

Cliente informa dados de sua conta e realiza login do iBanking. O sistema vincula a conta logada na sessão BBC-AAX. Para maior segurança, além de um servidor seguro, a sessão criada possui algumas informações do internauta, como por exemplo, o número do IP (obviamente criptografado)
Cliente realiza todas as transações de maneira segura, onde o sistema sempre verifica as informações da sessão BBC-AAX, e da máquina do usuário.

Cliente finaliza processo, e o sistema libera a sessão BBC-AAX.
Mas chega de apresentações! Chegou a hora de por a mão na massa.
Exemplo 1 – Função randômica para criação de sessões:
function NewIDRamdom:String;
begin
Result:= IntToHex(Random($ffffffff),8)+'-'+
IntToHex(Random($ffffffff),8)+'-'+
IntToHex(Random($ffffffff),8)+'-'+
IntToHex(Random($ffffffff),8);
end;
Exemplo 2 – Função que utiliza diversos dados, como data e hora.
function NewIDPlus:String;
var
iAno, iMes, iDia, iHora, iMinuto, iSegundo, iMSegundo: Word;
begin
DecodeDate(Now, iAno, iMes, iDia);
DecodeTime(Now, iHor, iMin, iSeg, iMSeg);
Result:= IntToHex(iAno,3)+'-'+
IntToHex(iMes,2)+'-'+
IntToHex(iDia,2)+'-'+
IntToHex(iMSegundo,3)+'-'+
IntToHex(iSegundo,2)+'-'+
IntToHex(iMinuto,2)+'-'+
IntToHex(iHora,2);
end;
Exemplo 3 – Função que retorna uma GUID.
Neste exemplo, necessitamos de duas units: ActiveX e COMOBJ.
function NewIdGuid:String;
var
MinhaGUID:TGUID;
begin
CoCreateGuid(MinhaGuid);
Result:=GUIDToString(MinhaGuid);
end;
Exemplos de utilização:
Variável de sessão:
var
IDSession: String;
Variável Internet, que identifica o usuário:
ID
Exemplos:
<input type=”hidden” name=”ID” value=”...>
http://servidor/aplicacao.dll/login?ID=....
No evento OnBeforeDispatch insira o código que segue:
begin
if Request.ContentFields.values[‘ID’]=’’ then
IDSession := NewIdGuid;
end;
E no parser do seu Producer (onHTMLTag), coloque o código que segue:
begin
if TagString=’ID’ then
ReplaceText:=IDSession;
end;
Em todas as páginas você deverá inserir a Tag transparente <#ID>, exemplo:
Exemplos:
<input type=”hidden” name=”ID” value=”<#ID>”>
http://servidor/aplicacao.dll/login?ID=<#ID>
<form name=”cliente” action=”/apl.dll/confirma?ID=<#ID>”>
No próximo artigo, faremos uma rotina completa de login utilizando uma das funções descritas.
Muita luz e energia à todos!
Emerson Facunte
Emerson Facunte é especialista em aplicações e-business, e membro-fundador do DUG-BR. Ministrou palestras e cursos para mais de 5 mil pessoas em todo território nacional. Pode ser contatado em emerson@facunte.com.br



