Ir para conteúdo

POWERED BY:

Arquivado

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

Thyago Brasil

sessão expirou

Recommended Posts

Galera,

 

Bom dia!

 

Estou desenvolvendo um sistema em asp.net com a seguinte estrutura.

 

- Default: Tem um iframe que chama a próxima página

- Principal: Tem uma treeview e um iframe que chama as páginas internas

 

Ao expirar a conexão (Timeout = 30 seg), gostaria que ele fosse para a página de Login. Hoje o sistema faz isso, porém, dentro do iframe da página principal. Queria que essa página não abrisse dentro do iframe e sim fora dele. Na página inteira.

 

Se tiverem alguma dúvida sobre minha explicação postem aí.

 

Abraços

 

Thyago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Terá que chamar um método Javascript que redireciona informando o target, pois redirect não é possível informar o target.

 

Abraços...

 

quintelab, como eu faria isso? Hoje o sistema ja faz isso (quando o tempo expira, joga para a tela de login), porém ele joga dentro do iframe.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET > Web Applications http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Javascript / DHTML

 

Acho que isso server:

window.open("paginaNova.html","NomeIframe","");

Abraços...

 

quintelab, hoje nós usamos uma tecnica de segunrança no proprio c#. pra utilizar o javascript não teriamos de usar outra tecnica?

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você esta usando Membership? se sim basta confgurar no web.config.

<authentication mode="Forms">
   <forms name="at" loginUrl="~/login.aspx"/>
  </authentication>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Para fazer isto, a página que está dentro de seu iframe deve enviar para o pai(no caso o documento onde o iframe está inserido) a informação de que a sessão caiu.

Uma maneira de fazer, é dentro desta página de login, colocar um javascript que envia um comando para o pai.

 

Algo do tipo(ambos os códigos são javascript):

 

No pai:

function sessaoExpirou() {
 this.location = "login.aspx";
}

Em login.aspx, que é carregado dentro do iframe:

function verificaIframe() {
 try {
 parent.sessaoExpirou();
 } catch(e) {}
}

E no onload você chama a função. Desta forma quando existir um pai, ela vai tentar chamar a funcao sessaoExpirou.

Coloquei de uma maneira mais simples, dá para adaptar a sua lógica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você esta usando Membership? se sim basta confgurar no web.config.

<authentication mode="Forms">
   <forms name="at" loginUrl="~/login.aspx"/>
  </authentication>

Ivan, fiz essa alteração que você me falou e não deu certo. Continua abrindo a página do login dentro do Iframe.

 

Obrigado

 

Thyago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi thiago, acho que a melhor forma pra você é no load da pagina que esta detro do iframe você verifica se esta autenticado se não você recireciona via javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Para fazer isto, a página que está dentro de seu iframe deve enviar para o pai(no caso o documento onde o iframe está inserido) a informação de que a sessão caiu.

Uma maneira de fazer, é dentro desta página de login, colocar um javascript que envia um comando para o pai.

 

Algo do tipo(ambos os códigos são javascript):

 

No pai:

function sessaoExpirou() {
 this.location = "login.aspx";
}

Em login.aspx, que é carregado dentro do iframe:

function verificaIframe() {
 try {
 parent.sessaoExpirou();
 } catch(e) {}
}

E no onload você chama a função. Desta forma quando existir um pai, ela vai tentar chamar a funcao sessaoExpirou.

Coloquei de uma maneira mais simples, dá para adaptar a sua lógica.

 

Entendi Bruno, porém onde eu faço a verificação é feito em C#. Isso não daria algum problema?

 

Abraço,

 

Thyago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta algo assim:

protected void Page_Load(object sender, EventArgs e)

{

if(!User.Identity.IsAuthenticated)

Response.Write("<script>window.parent.location = 'login.aspx';</script>");

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta algo assim:

protected void Page_Load(object sender, EventArgs e)
    {
        if(!User.Identity.IsAuthenticated)
            Response.Write("<script>window.parent.location = 'login.aspx';</script>");
    }

Boa Tarde Ivan,

 

Seguinte...eu fiz o que você me falou porém vou te explicar a estrutura que estou utilizando aqui com iframes pq ainda esta com um problema.

 

Eu tenho as páginas:

 

- default.aspx: Nesta página eu tenho um iframe

- principal.aspx: Nesta página tenho duas colunas. Na esquerda tem um menu e na direita eu tenho mais um iframe.

 

Quando clico no menu que esta na principal.aspx, ele abre uma página no iframe que esta na coluna direita. Até aí tudo certo, porém quando o tempo de execução se esgota e a página é redirecionada para a login.aspx, ela abre dentro do Iframe da página default.aspx quando na verdade teria de abrir fora deste iframe.

 

Se tiver duvidas sobre minha explicação, por favor, poste aí.

 

Obrigado,

 

Thyago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então thiago eu entendi si situação, mas mesmo da forma q poestei ai, ainda esta abrindo dentro do iFrame? se sim muda o parent para top

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então thiago eu entendi si situação, mas mesmo da forma q poestei ai, ainda esta abrindo dentro do iFrame? se sim muda o parent para top

 

Ivan,

 

Parece que agora deu certo. Troquei o parent pelo top como você falou. Vou fazer uns testes aqui nos navegadores e dando tudo certo eu posto aqui novamente confirmando e coloco como ficou o codigo lá também.

 

Obrigado,

 

Thyago

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.