Domanda

Attualmente sto creando un'applicazione Web interna utilizzata in una posizione di tipo fabbrica / magazzino. Gli utenti condivideranno un singolo PC tra più persone, quindi abbiamo bisogno di un timeout di sessione abbastanza breve per impedire alle persone di vagare e lasciare l'applicazione acceduta dove qualcun altro può venire sul PC e fare qualcosa con il nome utente dell'utente precedente.

Il problema è che una sessione può scadere mentre un utente sta inserendo informazioni in un modulo, specialmente se impiega molto tempo.

Come lo gestiresti in modo intuitivo?

È stato utile?

Soluzione

Tieni informato il server del fatto che l'utente sta inserendo attivamente informazioni. Ad esempio, inviare un messaggio al server se l'utente preme il tasto TAB o fa clic con il mouse su un campo. La soluzione finale dipende da te.

Altri suggerimenti

Utilizzare AJAX per riporre regolarmente i contenuti del modulo parzialmente compilato in modo che non abbiano perso il lavoro se vengono avviati dal sistema. Diamine, una volta che lo fai, usa AJAX per evitare che la loro sessione si interrompa se trascorrono il tempo a scrivere.

Il miglior consiglio sarebbe probabilmente quello di chiedere agli utenti di chiudere la finestra del browser una volta terminato. Con l'uso dei cookie di sessione, la sessione termina automaticamente alla chiusura del browser o in caso contrario con un timeout di 30 minuti (può essere modificato in seguito).

Dal momento che per impostazione predefinita non c'è interazione tra il browser e il server una volta caricata una pagina, per aggiornare la sessione dovresti avere un javascript che contatta il server in background su form-page, ma sembra anche un po ' molti problemi per un problema così piccolo.

Se il timeout della sessione è così breve che l'utente non ha il tempo di compilare un modulo, aggiungerei uno script AJAX che invia una richiesta http al server, ogni pochi minuti, per mantenere viva la sessione. Lo farei solo sulle pagine in cui l'utente deve compilare qualcosa o ha già iniziato a riempire qualcosa.

Un'altra soluzione sarebbe quella di utilizzare uno script di promemoria di timeout della sessione che apre una finestra di dialogo per ricordare all'utente che la sessione sta per scadere. Il popup dovrebbe visualizzare un " Logout " e un " Continua a usare l'applicazione " che fa una richiesta Ajax per aggiornare il timeout della sessione.

Forse in questo caso potrebbe essere utile un processo javascript keep-alive. Se lo script acquisisce alcuni trigger di tasti, invia un messaggio " Sto ancora digitando " messaggio al server per mantenere viva la sessione.

hai pensato di dividere il modulo in blocchi più piccoli?

Monitora il timeout e pubblica un pop-up per avvisare l'utente che la loro sessione attuale scadrà e presenterà " OK " o " Annulla " pulsanti. OK per continuare la sessione (ad es. Reimpostare il contatore su altri 5 minuti o 10 minuti - qualunque cosa sia necessaria) -oppure- Annulla per consentire alla sessione di continuare il conto alla rovescia a zero e quindi terminare.
Questo è uno dei tanti modi per gestirlo.

Uso di un thread " JavaScript " tenere aperta la sessione è, per me, una cattiva idea.

È contro l'idea del timeout della sessione che esiste per liberare alcune risorse se non c'è nessun utente davanti all'applicazione.

Penso che dovresti regolare il timeout della sessione con il tempo più preciso, al fine di compilare il modulo in un "normale uso normale".

Puoi anche essere proattivo tramite:

  1. avere un avviso JavaScript che mostra all'utente un avviso non intrusivo (non un popup) prima della scadenza del timeout, che indica che la sessione scadrà presto (e fornisce un collegamento per inviare una richiesta ajax per ripristinare il timeout e rimuovere quell'avvertimento: ciò eviterà all'utente di perdere il modulo che sta scrivendo),
  2. e hanno anche un secondo JavaScript "thread", che, se la sessione è scaduta, reindirizza alla pagina di accesso con un messaggio che dice che la sessione è scaduta.

Pensa che sia il migliore perché evita all'utente di compilare un modulo complicato per nulla e di gestire il caso quando l'utente se ne è andato.

In alternativa alle soluzioni tecniche, è possibile presentare la propria candidatura in modo tale che ogni volta che viene svolto un determinato lavoro, ad esempio compilando un modulo, si chieda all'utente se desidera continuare a fare un altro lavoro o se sta fatto. Yould potrebbe avere una schermata iniziale con opzioni di menu e se l'utente sceglie un'opzione, deve prima inserire le sue credenziali.

Oppure inserisci un campo password nel modulo. Dipende da quanti moduli devono compilare una sessione.

Quando l'utente pubblica il modulo e la sua sessione è scaduta, dovresti assicurarti di salvare i valori del modulo da qualche parte e quindi chiedere all'utente di accedere nuovamente. Una volta eseguita nuovamente l'autenticazione, possono quindi inviare nuovamente il modulo (poiché nessuno dei loro dati andrà perso).

Avevo sviluppato qualcosa che richiedeva una sessione molto lunga. L'utente ha effettuato l'accesso a una pagina quando si è seduto sulla macchina e dopo aver fatto il suo lavoro, si è disconnesso. Ora può usare il sistema per pochi minuti o per ore. Per mantenere viva la sessione fino a quando non si è disconnesso, ho usato il timer con javascript, è andato sul server e ho aggiornato un'etichetta anthem con corrente tempo sul server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top