none
Problema UnauthorizedAccessException C# Asp.Net RRS feed

  • Pergunta

  • Bom Dia Pessoal

    Eu gostaria de após 15 minutos a sessão do usuário expirasse e ele fosse redirecionado para a página de Login.

    Utilizei a seguinte maneira:

     public void ChecaSessao()
            {
                   if (Usuario.IdUsuario == 0 && Aluno.IdCliente == 0 && Instrutor.IdInstrutor == 0 && Vendedor.IdVendedor == 0)
                        Session["Usuario"] = new Usuario { IdUsuario = 99999, Nome = "Administrador" };
    
                    throw new UnauthorizedAccessException("Sua sessão expirou. Por favor, efetue novamente o login!");
                }

    E no Web.Config

      <customErrors mode="On"></customErrors>
        <authentication mode="Forms">
          <forms loginUrl="~/Account/LogOn" timeout="15" />
        </authentication>
    Alguém poderia informar oq está faltando?

    sexta-feira, 2 de novembro de 2012 13:04

Respostas

  • Olá,

    Acredito que o problema é o seguinte:

    Quando a sessão do usuário expirar, não conseguirá chegar até o seu método de validação, pois esta foi expirada.

    Costumo tratar exceptions de redirecionamento no Global.asax, desligando o customError (mode="off").

    Passos: 

    1) Setar o customErrors mode="off";

    2) Se não tiver o arquivo Global.asax, adicionar ao projeto/

    3) Capturar o erro e tratar da maneira desejada no evento Application_Error. Segue abaixo exemplo:

    protected void Application_Error(object sender, EventArgs e)
    {
    Exception exp = Server.GetLastError();
    
    //Verificar o tipo da exception e tratamento de mensagem desejada
    
    //Redirecionar para a página de erro desejada ou para a página de login
    HttpContext.Current.Response.Redirect("~/Error.aspx", true);
    }

    Observação: se quiser exibir algum tipo de mensagem e não uma tela padrão, deverá enviar para a página esta informação e recuperá-la para exibição (via query string (bom utilizar enum) ou que for mais conveniente).


    quarta-feira, 28 de novembro de 2012 13:25

Todas as Respostas

  • Olá,

    Acredito que o problema é o seguinte:

    Quando a sessão do usuário expirar, não conseguirá chegar até o seu método de validação, pois esta foi expirada.

    Costumo tratar exceptions de redirecionamento no Global.asax, desligando o customError (mode="off").

    Passos: 

    1) Setar o customErrors mode="off";

    2) Se não tiver o arquivo Global.asax, adicionar ao projeto/

    3) Capturar o erro e tratar da maneira desejada no evento Application_Error. Segue abaixo exemplo:

    protected void Application_Error(object sender, EventArgs e)
    {
    Exception exp = Server.GetLastError();
    
    //Verificar o tipo da exception e tratamento de mensagem desejada
    
    //Redirecionar para a página de erro desejada ou para a página de login
    HttpContext.Current.Response.Redirect("~/Error.aspx", true);
    }

    Observação: se quiser exibir algum tipo de mensagem e não uma tela padrão, deverá enviar para a página esta informação e recuperá-la para exibição (via query string (bom utilizar enum) ou que for mais conveniente).


    quarta-feira, 28 de novembro de 2012 13:25
  • veja 

    http://www.schnieds.com/2009/07/aspnet-session-expiration-redirect.html


    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    sexta-feira, 30 de novembro de 2012 11:02
    Moderador