none
Expirar session ao desligar browser RRS feed

  • Pergunta

  • Opa pessoal!

    Procurei na internet e não encontrei uma boa solução para esse meu problema. É o seguinte, minha sessão já está condicionada a expirar com timeout. Mas eu gostaria que a sessão também expirasse quando o usuário fechasse o browser ou abrisse outra página da net. Achei alguem sugerindo o uso de IFrame, mas eu uso MasterPage, e acredito que não ficará legal.

    Alguém tem alguma idéia ou link sobre este assunto?

    Abraços,
    quarta-feira, 23 de dezembro de 2009 21:44

Todas as Respostas

  • Amigo,

    Para identificar quando o browser é fechado você pode implementar um evento em Javascript:
    http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx


    Agora não entendi a parte que o usuário abrir um browser ou outra página que não é do seu site expirar a sessão.

    Veja se ajuda...

    []´s
    segunda-feira, 28 de dezembro de 2009 20:52
  • Opa Alves Tiago,

    A solução do link, assim como a solução que eu coloco abaixo, resolve parte do problema, que é a identificação da saida da página atual. O problema é que eu estou trabalhando com MasterPage. Então o que acontece é o seguinte: Eu faço o login e entra na home.aspx (que faz parte da MasterPage), então quando eu clico no link para a página consultas.aspx (que também faz parte da MasterPage), por exemplo, a função OnUnload é chamada, e portanto a sessão é fechada, voltando para a tela de login...

    Eu queria saber como eu faço para que a função OnUnload abaixo somente seja chamada quando a página acessada não fizer parte da MasterPage.

            protected void OnUnload(object sender, EventArgs e)
            {
                Session.Abandon();
            }

    Este código está escrito na MasterPage.cs, e atribuído ao atributo "Unload" do hyperlink "sair".

    Basicamente o que eu quero é fechar a sessão do usuário quando o mesmo clicar no hyperlink "sair" do sistema, ou fechar o browser, ou carregar outra página da web que não seja a do meu sistema.

    Se alguém tiver uma solução para isso, eu agradeço.

    Um grande abraço!
    terça-feira, 29 de dezembro de 2009 05:02
  • Amigo,

    Faça implementação do UnLoad nas páginas que não fazem parte da MasterPage para fazer isso você pode criar uma classe que herda System.Web.UI.Page e implementar o metodo OnUnload, ex:

    BasePage.cs
    public class BasePage : System.Web.UI.Page
    {
        protected override void OnUnload(EventArgs e)
        {
            base.OnUnload(e);
            Session.Abandon();
        }
    }
    Default.aspx.cs

    public partial class _Default : BasePage
    {
    
    }
    Nas páginas que não implementam a MasterPage você não utiliza o BasePage.

    Veja se ajuda esse link:
    http://social.msdn.microsoft.com/Forums/pt-BR/504/thread/b66f21eb-dad5-41a6-9b9c-00117f413f4a

    Caso já tenha encontrado uma solução post aqui, para que outros que possam ter o mesmo problema.

    []´s
    quarta-feira, 30 de dezembro de 2009 10:27
  • Opa Alves Tiago,

    Ainda não encontrei uma solução. Essa que você postou não está funcionando corretamente. Primeiro, quando eu uso o BasePage em alguma página, ao entrar nesta página ela abre normalmente, e só expira a sessão quando eu tento sair desta página para outra. Era pra expirar logo que entra na página, e não para exibir ela.

    Outra coisa, você disse "Nas páginas que não implementam a MasterPage você não utiliza o BasePage". Mas na verdade o que acontece é que nas páginas que eu implemento o BasePage, a sessão expira. Então eu deveria implementar a BasePage nas páginas que não fazem parte da MasterPage...

    Aí que entra o grande problema. No meu sistema todas as páginas na verdade fazem parte da MasterPage. O que eu quis dizer com páginas que não fazem parte da MasterPage na verdade são "www.google.com.br", "www.yahoo.com", etc... Ou seja, qualquer página que não faça parte do meu sistema.

    Neste link que você postou dizem que quando a pessoa desliga o browser, a sessão só expira quando dá o timeout. Eu queria saber justamente se tem como implementar algo para fechar a sessão sem que precise bater o timeout, ou seja, ao fechar o browser, mudar para outro site, ou clicar no botão "sair" do meu sistema.

    Um grande abraço !
    quarta-feira, 30 de dezembro de 2009 19:04