Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

prompt

Deslogar do sistema C# usando webforms.

Recommended Posts

Opa galera, beleza?

 

Pois é, dessa vez estou com um probleminha ao deslogar do sistema.

Quando o usuário loga no sistema, usa, desloga, ele é redirecionado para a tela de login. Até ai 100%. Porém, se o mesmo clicar em voltar no browser ele retorna para dentro do sistema e não é redirecionado, ou seja, ele visualiza a última tela na qual deslogou. O redirecionamento só funciona se ele tentar clicar em qualquer link ou botão, ai sim é enviado para a tela de login novamente.

 

Como faço para redirecionar nesse caso?

 

Para fazer o login e para redirecionar automáticamente para a tela de login se não estiver logado estou utilizando o seguinte código no meu web.config: (não sei se o esquema de Profile tem a ver, então coloquei tb.)

 

<authentication mode="Forms">
	<forms name="TRIUNFO" defaultUrl="Home.aspx" loginUrl="Login.aspx"  timeout="30" />
</authentication>
<authorization>
	<deny users="?"/>
</authorization>
<anonymousIdentification enabled="true" />
<profile defaultProvider="SQLProvider">
	<providers>
		<add name="SQLProvider"	type="System.Web.Profile.SqlProfileProvider" connectionStringName="ConnectionString" />
	</providers>
	<properties>
		<add name="IDusuarioLogado" type="int" defaultValue="" allowAnonymous="true" />
		<add name="NomeUsuarioLogado" type="string" defaultValue="" allowAnonymous="true" />
		<add name="GrupoAcessoUsuarioLogado" type="string" defaultValue="" allowAnonymous="true" />
	</properties>
</profile>

 

Enfim, ai faço o login do usuário no sistema com a seguinte linha:

FormsAuthentication.RedirectFromLoginPage(Session["NomeUsuarioLogado"].ToString(), false);

E por último, quando vou deslogar o usuário, coloquei o seguinte código no botão:

Profile.GrupoAcessoUsuarioLogado = "";
Profile.NomeUsuarioLogado = "";
Profile.IDusuarioLogado = 0;
FormsAuthentication.SignOut();

Response.Redirect("Login.aspx");

 

Valeu a ajuda galera!

 

Abraços,

Prompt.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando ele volta não cai no postback da página anterior?

se sim, o correto seria criar uma validação em todas as páginas, se estiver logado continua, caso contrario redirecionar para a página de login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Ivan, bom dia, tudo beleza?

 

Então, sim, é exatamente isso que acontece, porém não posso deixar pois a última tela onde o usuário estava quando deslogou pode conter informações importantes, e que ninguém deve ter acesso..

 

De qualquer forma, imaginei que o <authorization><deny users="?"/></authorization> cuidaria também disso, uma vez que desloguei o usuário do sistema..

 

Pois é Rafael, posso fazer isso, porém imagino que tenha algo que possa alterar na forma que estou fazendo para remediar mais facilmente.

Afinal, concorda comigo que se eu usasse sua solução, não precisaria ter implementado o esquema de authorization nativo?

 

Sua solução é uma saída sim, e obrigado pela ajuda, só que gostaria de saber se desta forma que fiz, se estou fazendo algo errado ou posso melhorar de algum jeito para resolver isso, sem ter que implementar página a página esta verificação..

 

 

Obrigado pela força galera,

Abraços,

Prompt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Promp, você tem razão quanto a esse ponto de voltar e ver o anterior, nativo do .net não tem não e praticamente você teria q implementas todas as páginas, então veja esses artigos que acho que te ajudar a localizar uma solução mais viável.

 

http://www.israelaece.com/post/Expirar-Variaveis-de-Sessao.aspx

http://www.israelaece.com/post/A-sua-sessao-expirou.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Promp, você tem razão quanto a esse ponto de voltar e ver o anterior, nativo do .net não tem não e praticamente você teria q implementas todas as páginas, então veja esses artigos que acho que te ajudar a localizar uma solução mais viável.

 

http://www.israelaece.com/post/Expirar-Variaveis-de-Sessao.aspx

http://www.israelaece.com/post/A-sua-sessao-expirou.aspx

 

Pois é Ivan, dei uma boa lida no que me mandou e não imagino que seja isso que resolva.

Quando se da um Voltar no browser nada da página anterior é executado novamente, nem o Page_Load, nada. Ele simplesmente lê tudo que está gravado no cache e carrega. Desta forma inclusive, nem daria para fazer o que o Rafael falou de fazer uma verificação..

 

Pra piorar, quando percebi isso fui fazer um outro teste. Desloquei do sistema e fui dando Voltar. Ele passa por TODAS as telas visitadas pelo usuário.. Isso é inaceitável.. to besta como isso é perigoso..

 

Pensei em usar uma das soluções que me enviou, de fazer as páginas não gravarem cache, mas isso pode trazer vários outros problemas..

Enfim, não tenho nem idéia de como resolver isso..

 

 

Mas valeu a força!

Quem puder nos dar uma força agradeço muito!!

 

Abraços,

Prompt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá prompt,

achei um tópico na net com um problema igual ao seu, no caso ele utilizou um History.Clear() e diz ter funcionado.

 

Espero ter ajudado.

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá prompt,

achei um tópico na net com um problema igual ao seu, no caso ele utilizou um History.Clear() e diz ter funcionado.

 

Espero ter ajudado.

Abs.

 

Pois é Osama.RJ, não tive sucesso, o que encontrei foram funções diferentes dessa, porém não funcionaram. Esta função não da certo no IE7 pelo menos, da erro inclusive.

 

Tentei também variantes dessa mesma função e outras formas como executar o redirecionamento para a tela de login por javascript:

protected void BtnLogout_Click(object sender, ImageClickEventArgs e)
    {
        Profile.GrupoAcessoUsuarioLogado = "";
        Profile.NomeUsuarioLogado = "";
        Profile.IDusuarioLogado = 0;
        FormsAuthentication.SignOut();
        Session.Abandon();
        Response.Write("<script language=javascript>");
        Response.Write("{");
        Response.Write(" history.go(-history.length);");
        Response.Write(" window.location.href='login.aspx';");
        Response.Write("}");
        Response.Write("</script>");

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

Desabilitei também os botões de navegação Voltar e Avançar, mas parece que no IE7 tb não rola..

<script language="javascript">
     window.history.forward();
</script>

Sei lá, perdi mó tempão já nisso e não consegui encontrar uma solução definitiva..

 

Alguém tem mais alguma idéia do que podemos fazer para solucionar meu problema?

Agradeço a força galera!!

 

Abraços,

Prompt

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.