none
exibir tempo restante de sessão RRS feed

  • Pergunta

  • Uso VS2010, aspnet, c# sqlserver2008

    Faço a segurança do site através do Membeship. Como faço para exibir no webform o tempo restante de sessão de cada usuário?

    tipo: No site do banco do Brasil, quando voce loga, fica exibindo o tempo restante para expirar a sessão. 


    Álvaro Luiz

    quinta-feira, 4 de dezembro de 2014 10:47

Todas as Respostas

  • Basta que, assim que o usuário efetuar o login, salve a data/hora em que ele fez isso. A partir dai, faça um relógio simples em javascript que diminua o tempo a partir do seu parâmetro.

    Um exemplo de um plugin em jQuery de relógio que também suporta muitas outras funcionalidades.

    http://flipclockjs.com/

    Ae, no C#, quando processar e logar o usuário, apenas chame sua função javascript passando os parâmetros:

    Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "jstimer", "iniciaMeuRelogio(30)", false);

    e o seu javascrupt já pronto em sua masterpage, por exemplo, receberia o tempo:

    function iniciaMeuRelogio(_tempo)
    {
       //TODO: código do relógio regressivo em javasacript
    }

    Quando o tempo que você definiu de sessão terminar, qualquer próximo post do .net vai fazer o logoff automático. Mas caso queira que ao zerar, isso seja feito automaticamente, basta que, nesse seu mesmo método que inicia, você validar se ele zerou. Ao zerar, você força o logoff do cara.


    quinta-feira, 4 de dezembro de 2014 12:39
  • Olá Rafa!

    É o seguinte: A sessão inicia a partir da inatividade do usuário, caso ele interaja novamente o relógio voltará ao valor máximo definido no membership, estamos falando a mesma língua, 

    EX: o tempo máximo de inatividade para o sistema fazer logout é de 20min. Depois de 10min passado o usuário volta a interagir, então a sessão (o tempo) voltará para 20mim. 


    Álvaro Luiz

    quinta-feira, 4 de dezembro de 2014 12:59
  • Segue a mesma linha.

    Para saber se o usuário está inativo, use um campo na tabela que salva o último "post" do usuário em seu projeto. E se baseie nesse tempo para calcular o tempo restante.

    POr exemplo:

    - O usuário logou no site (fez um post - registra na tabela usuario.DataUltimoPost por exemplo);
    - Usuário está navegado (cada post, update na data com a hora atual)
    - Usuário não fez nenhum post (está inativo).
    - Relógio em javascript, baseado na última data de post dele começa a decrementar.

    Sacou?

    quinta-feira, 4 de dezembro de 2014 13:59