Pergunta

Eu mantenho uma variável de sessão quando o usuário está conectado. De modo que quando o usuário clicar em btnLogout deve limpar todas as minhas sessões e registrar o usuário para o bem !!!

Ele faz limpar minhas sessões, mas se eu clicar no botão BACK no IE logo após i desconectado, então eu ainda estou logado! Significado ele vai voltar para a tela onde o usuário ainda estava conectado.

Meu código no log out

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

Por que é isso e como posso evitar isso?

EDIT: Existe talvez uma opção em código que eu posso fazer que irá desativar o usuário pressionar o botão BACK na Web Browzer?

Foi útil?

Solução

Você poderia colocar isso no Page_Init do seu Mestre:

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));

Este é, por exemplo, que a maioria dos sites bancários que assim que você não pode usar eficazmente o botão de volta.

Outras dicas

Isso é realmente um problema embora? Sim, eles poderiam ver a sua página anterior como tem sido armazenada em cache, mas assim que eles tentam fazer quaisquer outros pedidos legítimos neste contexto estes irão falhar como suas variáveis ??de sessão são ido.

A menos que tenha algum motivo muito específico para a codificação em torno deste você estaria resolvendo um problema que realmente não existe.

Existem várias maneiras que você pode dizer o navegador não armazenar em cache a página, quer a partir do código-behind, javascript ou através de HTML usando o seguinte na página

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

Ele também teria sido uma boa prática de adicionar em seu evento page_load no código-behind algum código para garantir que a variável de sessão ainda existe realmente.

O navegador mantém um cache da página para simplesmente bater de volta não vai fazer um pedido para o servidor para ver se você ainda está conectado. Você teria que usar HTTPS para garantir o cache também é protegido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top