por Cesar Cassiano Schimanco

Redirecionar automaticamente para o login ao expirar sessão - ASP.NET

É muito comum utilizar Sessions para gerenciar sistemas de login.
Cria-se uma tela para autenticação, o usuário autentica e uma nova Session é criada com os dados dele. Nas páginas de acesso restrito verificamos se esta sessão existe, se existe, permite o acesso do usuário, se não existir, redireciona ele para a tela de login.
Isso é simples, o problema é quando você precisa ejetar o usuário no momento em que a sessão acabar. Algumas pessoas tentam utilizar o Session_End do global.asax para fazer o redirect para a página de login, mas como este é um evento de servidor, ele não vai fazer o redirect de uma página aberta no cliente.

Uma boa alternativa para redirecionar o usuário automaticamente para tela de login é utilizar o Refresh no Response.AppendHeader, assim, se o usuário ficar inativo até o Session.Timeout ele será automaticamente redirecionado para /Login.aspx.

Basta adicionar a linha abaixo no Page_Load das páginas de acesso restrito ou na Master Page se for o caso.

Response.AppendHeader("Refresh", String.Concat((Session.Timeout * 60), ";URL=/Login.aspx"));


Como ficou na página.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : BaseSite
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
        Response.AppendHeader("Refresh",
            //Session TimeOut é em minutos e o Refresh e segundos, por isso o Session.Timeout * 60
            String.Concat((Session.Timeout * 60),
            //Página para onde o usuário será redirecionado
            ";URL=/Login.aspx"));
    }
}

 

Resumo:
Vimos neste artigo como ejetar usuários automaticamente de uma página quando o login expirar (Session.Timeout).
 

Comentários

Carregando comentários

Postar um novo comentário



Processando...