Em um sistema desconectado isso pode gerar problemas sérios, mas, vamos lá:

A única forma de você saber se um usuário está ou não autenticado é salvando
esta informação server-side no momento do logon e limpando-a no momento do
logoff.

A única forma viável de se fazer isso é através de Sessions (sejam ela do
servidor http, sejam feitas manualmente).

A principal característica de uma Sessão é que ela expira alguns minutos
após ser criada, se não for constantemente atualizada.

Aí temos 2 problemas:

1) O teu aplicativo deverá ficar invocando a sessão de tempos em tempos para
certificar que ela não caia.
2) Se o usuário fechar o navegador (especialmente se não houver mais conexão
com o servidor, i.e. a internet caiu), o logoff poderá não ser efetuado.

O primeiro é fácil resolver... só fazer um acesso à sessão a cada função
executada no servidor (e, de preferência, uma invocação do client ao server
que não faz nada (PING) só para refrescar a sessão).

O segundo é um pouco mais complicado... Neste caso, a sessão só terminará
após vários minutos (padrão do ASP.net = 15 minutos). Então, no caso de uma
deconexão, o usuário precisará esperar 15 minutos até conseguir entrar no
sistema novamente.

Outro ponto que deve ser levado em consideração (mas apenas em servidores
compilados, PHP por ser interpretado fica fora desta) é que a sessão pode
ser derrubada no evento de um restart do servidor (físico ou lógico). Então
seus retornos deverão considerar uma sessão que caiu e interromper o
aplicativo de acordo.

Então, basicamente:

1) Salve a autenticação em Session
2) No evento de fechamento da página (em JavaScript), tente invocar o método
para desautenticar
3) Mantenha uma sessão com tempo de expiração pequeno (digamos, 60 segundos)
4) Faça com que o Flex invoque um método para atualizar a sessão a cada,
digamos, 50 segundos (um pouco menos do que o tempo para a sessão expirar).

Cookies não servem neste caso, pois o cookie é específico do navegador. Mas,
de qualquer forma, para suportar uma sessão HTTP real, o aplicativo deverá
ser um CookieContainer, ou seja, Flex no navegador funciona bem, Flex no
FlashPlayer (ou AIR), já não funcionaria.

Outra alternativa, mais complexa, porém muito mais confiável, é a utilização
de sockets (já que o socket cai automaticamente quando o navegador é fechado
ou a rede cai e isso é facilmente detectável pelo servidor tem tempo real),
porém, colocar um aplicativo com socket em um ISP é virtualmente impossível
se não comprar um servidor dedicado ou semi-dedicado.

Minha opinião: não faça isso =) Não vejo um cenário onde uma autenticação
única possa auxiliar em alguma coisa, exceto no caso de licenciamento.

2010/1/14 Luiz Barros <sailorwebm...@yahoo.com.br>

> Amigos,
>
> Estou precisando montar um sistema de login para usuários.
> Isso eu já localizei na internet, até algums tutoriais.
>
> O problema é que preciso de que o sistema não deixe o mesmo Ou seja
> no momento em que o usuário x está logado, não permitir o acesso dele
> novamente enquanto ~cele não deslogar.
>
> Isso é muito importante para mim.
>
> Alguem poderia me ajudar ?
>
> Abraços
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>



-- 
[]
Júlio César Ködel G.
-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a