Sunday, August 2, 2009Controlando Login em Flex com SharedObject
Salve galera.
Vou postar abaixo uma classe chamada SharedObjectManager, que faz o controle de login de um usuário em uma aplicação Flex, ela armazena os dados de login do usuário em um SharedObject na máquina do usuário, em caso de dar fechar a janela ou apertar F5 do navegador, o usuário ainda permanece logado.
OBS: Utilizo esta classe com dois módulos (Login e Main) onde modulo Main é a aplicação em si. Esta classe você pode implementar a logica de negócio que precisar.
A classe LoginModelo é um simples VO que armazena as informações necessárias do usuário, você deve customizar ela de acordo com a sua necessidade.
Segue classe:
package br.com.ronaldorigoni.model{
import mx.collections.ArrayCollection;
public class LoginModelo{
private var _id:uint;
public function set id (value:uint):void{
{
_id = value;
}
public function get id ():uint{
return _id;
}
private var _login:String;
public function set login (value:String):void{
{
_login = value;
}
public function get login ():String{
return _login;
}
private var _password:String;
public function set password (value:String):void{
{
_password = value;
}
public function get password ():String{
return _password;
}
private var _permissions:ArrayCollection;
public function set permissions (value:ArrayCollection):void{
{
_permissions = value;
}
public function get permissions ():ArrayCollection{
return _permissions;
}
}
}
E a classe SharedObjectManager:
package br.com.ronaldorigoni.sharedObject{
import br.com.ronaldorigoni.model.LoginModelo;
import flash.net.SharedObject;
/**
* Classe que faz o controle de login de um usuário na aplicação.
* Basea-se em carregamento de dois modulos, login e main.
* @autor Ronaldo Rigoni.
**/
public class SharedObjectManager{
/**
* Objeto SharedObjetc privado.
**/
private static const SHARED_OBJECT:SharedObject = SharedObject.getLocal("userSharedObject");
public function SharedObjectManager(){
}
/**
* Funcao init(). Verifica se o usuário ja está autenticado na aplicação
* E controla qual modulo será carregado.
* Se ja estiver logado será o modulo principal.
* Caso contrario será exibido a tela de login.
**/
public function init():void{
if(verificarStatusLogin()){
loadMainModule();
}
else{
loadLoginModule();
}
}
/**
* Limpa o sharedObject se o mesmo não estiver nulo.
**/
private function clearSharedObject(event:Event):void{
if(SHARED_OBJECT != null){
SHARED_OBJECT.clear();
SHARED_OBJECT.flush();
}
}
/**
* Verifica status de login na aplicação.
* Aqui você pode aplicar outras regras de negocio
* para validar se o usuário esta logado ou nao,
* como por ex: tempo do ultimo login se ainda está valido...
**/
private function verificarStatusLogin():Boolean{
if(SHARED_OBJECT != null){
if(SHARED_OBJECT.data.loginModelo)
return true;
}
return false;
}
/**
* Carrega o modulo de login.
**/
private function loadLoginModule():void{
// codigo para carregar seu modulo de login
}
/**
* Carrega o modulo principal da aplicação se o usuário
* estiver autenticado.
**/
private function loadMainModule(loginModelo:LoginModelo = null):void{
// se loginModelo for null significa que usuário já está logado.
if(loginModelo != null){
saveLoginModelo(loginModelo);
}
// aqui codigo para carregar seu modulo principal
}
/**
* Salva os dados de login do usuário.
* @param loginModelo LoginModelo
**/
private function saveLoginModelo(loginModelo:LoginModelo):void{
SHARED_OBJECT.data.loginModelo = loginModelo;
SHARED_OBJECT.flush();
}
/**
* Recupera as informacoes de login.
* @return <code>loginModelo</code> caso estiver autenticado
* <code>null</code> caso não estiver autenticado
**/
public function retrieveLoginModelo():LoginModelo{
if(SHARED_OBJECT != null){
var modelo:LoginModelo = SHARED_OBJECT.data.loginModelo as LoginModelo;
return modelo;
}else{
return null;
}
}
}
}
Abraço e até um próximo post.
Ronaldo

Português
Italiano
English