[RESOLVIDO] Session+Abas+NAO PERMITIR

Pessoal, grande probleminha. Algum fera pode me ajudar ?
Seguinte!

editando : PS: estou trabalahdno com jsf e richFaces.
Tenho um sistema web e este NAO pode ser aberto em várias abas !.

Somente uma aba pode ficar “ativa”, funcionar …
se o cara abrir o sistema noutra aba, a/as que ja estavam abertas tem que ser inativadas!

BOM,
com a ajuuda de um cookie eu consigo verificar se o cara ja fez um login entao meu cookie login fika true.
quando ele abre outra aba, eu verifico que o login esta true , e aviso que ele ja esta logado.
neste aviso ele pode querer re-logar … clicando em um botao, ele joga login para false. e é redirecionado a pagina de login.

neste exato momento se eu tentar fazer algo na aba que ja estava aberta ela vai “cair” sendo redirecionada pelo SecureFilter para a pagina de login.
o secure filter verifica que a minha sessao foi terminada, ou que meu cookie de login ta false … (sao duas soluções, duas ações q podem ser geradas pelo re-logar)

pois até ai minha lógica funciona e o cara não pode abrir outas abas…

POREM, se com a primeira aba aberta …
ele abre uma segunda, pede pra re-logar …
e re-faz o login …
criando uma nova sessao, e dando true para o cookie de login…
ele esta ok na segunda aba…

voltando para a primeira aba. que ele não havia mexido ate agora…
ele pode acessar, o secure filter vai verificar que existe uma sessao, e esta valida… e existe o cookie dizendo q ele esta logado…
entao ele navega normal em ambas abas .

COMO PODEREI RESOLVER ESTE DILEMA ?

Ninguem ?
nem uma ideia ??

Eu já precisei fazer isso também. O que eu fiz foi criar uma classe Java chamada “AbaComponent” e dentro dela eu havia criado vários atributos.

HtmlTabPanel panel;
HtmlTab aba1;
HtmlTab aba2;
HtmlTab aba3

// gets e sets

Então na minha página JSF eu usei o binding

<rich:tabPanel binding="#{managedBean.abaComponent.panel}">
<rich:tab label="First" binding="#{managedBean.abaComponent.aba1}"> </rich:tab>
...

Então através do meu managedBean eu podia pegar qualquer aba e dizer se ela esta “visível” / “editável” / “somente leitura”, entre outros.

capiche

acho que voce não me intendeu bem …
o que quero bloquear é as abas do navegador e nao tabs dentro da minha app…

bloquear para que o usuario n abra o sistema em mais do que uma aba…

entendi…vc precisa descobri qual é o evento quando alguém abre uma nova aba.

Mas veja só, o cara abri uma nova aba é um contexto fora da sua aplicação. Eu diria que não dá pra fazer isso.

Consegui desenvolver uma idéia legal.
Cada aba tem suas variáveis de JS.

Quando tenho uma aba e faço login nela, eu gravo o JSESSION ID numa variavel. Gravo também um cookie com esse id.
Gravo outro Cookkie dizendo que já estou logado.
Gravo uma variável js dizendo que fui eu quem gravou o cookie LOGADO.

Quando abrir outra aba sem deslogar do sistema, vai verificar que eu estou logado normal.

Na situação que eu queria resolver.

ABRO A ABA 1: logo no sistema e navego.
ABRO A ABA 2: vou logar ele diz que estou logado, mando relogar. navego e talz.
VOLTO PARA A PRIMEIRA ABA: aparentemente eu estaria logado, taria com a váriavel dizendo que fui eu quem gravou o cookie LOGADO, POREM,
o JSESSION ID estaria diferente, então quer dizer que ja houve outro login em outra aba.

caso resolvido.