Pergunta

Atualmente, estou construindo uma aplicação web interna usada em um tipo de localização da fábrica / armazém. Os usuários estarão compartilhando um único PC entre várias pessoas, por isso precisamos ter um tempo limite da sessão bastante curto para impedir as pessoas errantes fora e deixando a aplicação logado onde alguém pode vir para o PC e fazer algo em nome do usuário anterior.

O problema com isto é uma sessão pode tempo limite enquanto um usuário está inserindo informações em um formulário, especialmente se eles tomam muito tempo.

Como você lidar com isso de uma maneira amigável?

Foi útil?

Solução

Mantenha o servidor informado sobre o fato de que o usuário está entrando ativamente informações. Por exemplo enviar uma mensagem para o servidor se o usuário pressiona a tecla TAB ou clica com o mouse em um campo. A solução final é até você.

Outras dicas

Use AJAX para esconder regularmente o conteúdo do formulário parcialmente preenchido-out para que eles não perderam o seu trabalho se eles se iniciado pelo sistema. Heck, uma vez que você está fazendo isso, o uso de AJAX para manter a sua sessão de tempo limite se passar o tempo digitando.

O melhor conselho seria provavelmente pedir aos usuários para fechar a janela do navegador, uma vez que está feito. Com o uso de session-cookies, a sessão será encerrada automaticamente quando o navegador for fechado ou de outra forma em um tempo limite de 30 minutos (pode ser alterado afaik).

Uma vez que existe por padrão há interação entre o navegador eo servidor, uma vez que uma página é carregada, você teria que ter um contato javascript o servidor em segundo plano em formulários de páginas para atualizar a sessão, mas parece um pouco demasiado muita dificuldade para tal problema menor de idade.

Se o tempo limite da sessão é tão curta que o usuário não tem o tempo para preencher um formulário, gostaria de colocar um script AJAX que faz uma solicitação HTTP para o servidor, a cada poucos minutos, para manter a sessão viva. Eu faria isso somente em páginas que o usuário tem de preencher algo ou já começou a encher alguma coisa.

Outra solução seria usar um script lembrete de tempo limite da sessão que popups um diálogo para lembrar o usuário de que a sessão está prestes a tempo. O pop-up deve exibir uma "Sair" e um "Continue usando o aplicativo", que faz uma solicitação ajax para atualizar a hora de sessão fora.

Talvez seja um processo javascript keep-alive poderia ser útil neste caso. Se a captura roteiro alguns gatilhos chave, ele enviar uma mensagem "Eu ainda estou escrevendo" para o servidor para manter a sessão viva.

você já pensou em quebrar o formulário em pedaços menores?

Monitorar o tempo limite e postar um pop-up para notificar o usuário de que sua sessão atual expira e presente "OK" ou "Cancelar" botões. OK para manter a sessão vai (ou seja, repor o contador a mais 5 minutos ou 10 minutos - o que você precisa). -Ou- Cancelar para permitir que a sessão para continuar a contagem regressiva para zero e, portanto, terminando
Essa é uma das muitas maneiras de lidar com isso.

Usando um "thread" JavaScript para manter o aberto sessão é, para mim, uma má idéia.

É contra a idéia de tempo limite da sessão que existe para libertar alguns recursos se não houver nenhum usuário na frente do aplicativo.

Eu acho que você deve ajustar o tempo limite da sessão com o tempo mais preciso, a fim de preencher o formulário em um "uso normal típico".

Você também pode ser pró-ativo por:

  1. tendo um alerta JavaScript exibir um aviso não-intrusiva (não um pop-up) para o usuário antes do tempo limite expirar, o que dizer que a sessão irá expirar em breve (e dar um link para enviar uma solicitação ajax para redefinir o tempo limite e remover esse aviso - que irá evitar que o usuário perdeu a forma que ele está digitando),
  2. e também ter um segundo "thread" JavaScript, que, se a sessão expirou, redirecionamento para a página de login com uma mensagem dizendo que a sessão já expirou.

Ele acha que é o melhor porque evitar que o usuário preencher um formulário complicado para nada, e lidar com o caso quando o usuário foi embora.

Como uma alternativa para as soluções técnicas, você pode fazer seu aplicativo de tal forma que toda vez que um determinado trabalho é feito, por exemplo, preencher um formulário, você pergunta ao usuário se ele quer continuar fazendo outro trabalho ou se ele é feito. Yould poderia ter um startscreen com opções de menu e se o usuário escolhe uma opção que ele primeiro tem de entrar suas credenciais.

Ou colocar um campo de senha no formulário. Depende de quantas formas eles têm que preencher uma sessão.

Quando o usuário envia o formulário e sua sessão expirou, você deve certificar-se de salvar os valores do formulário em algum lugar e, em seguida, pedir que o usuário de login novamente. Uma vez que você re-autenticado eles podem, em seguida, re-enviar o formulário (como nenhum de seus dados foram perdidos).

Eu tinha algo desenvolvido exigindo muito longa sessão. O usuário logado em uma página quando ele se sentar na máquina e depois de fazer o seu trabalho, desconectado. Agora, ele pode usar o sistema por alguns minutos ou horas. Para manter a sessão viva até que ele desconectado, eu usei temporizador com javascript, ele foi para servidor e atualizado um href="http://anthemdotnet.com" rel="nofollow noreferrer"> rótulo

scroll top