In QualiWare la scadenza di sessione può essere di due tipi: programmata o non programmata. La prima è conseguente ad un time out impostato in QualiWare, mentre la seconda può essere dovuta a fattori che invalidano la sessione corrente, le cui cause vengono riepilogate di seguito.
Scadenza non programmata
Una delle caratteristiche operative di QualiWare è quella di mantenere attiva la sessione dell’utente quando questo non la utilizza, evitando con ciò la scadenza della sessione dovuta al time out impostato per default sul Internet Information Service (IIS).
Tuttavia, ci sono circostanze ben precise ed estemporanee nelle quali la sessione scade e QualiWare non riesce ad evitarlo, presentandosi la seguente schermata.
I casi di scadenza non programmata della sessione sono determinati da:
- Le schede del browser nelle quali è aperto QualiWare vengono congelate per mancato uso. Il congelamento è una funzione introdotta nelle versioni recenti di Chrome, Edge e Firefox ed ha lo scopo di recuperare risorse di elaborazione. Se questo avviene, è altamente probabile che l’utente trovi la sessione scaduta al suo ritorno sulla scheda, presentandosi come sopra. Questo comportamento non è evitabile se non tramite un’apposita configurazione del browser, che però si sconsiglia;
- Il PC sul quale è aperto QualiWare si disconnette dalla rete per un tempo maggiore di quello impostato come time out dell’application pool (di default 20 minuti), oppure il PC viene messo in sospensione o ibernazione. In questi casi, l’utente trova la sessione scaduta al riavvio del PC o alla riconnessione in rete;
- Nell’ambiente mobile, quando l’app di QualiWare è aperta e si passa ad un’altra applicazione per un tempo maggiore di quello impostato come time-out dell’application pool (di default 20 minuti). In questi casi, l’utente trova scaduta la sessione dell’app di QualiWare;
- L’application pool viene riciclato e può avvenire per due ragioni:
- si presenta un errore non gestito nell’applicazione, questo è visibile nell’application event viewer sul server, dove viene riportato anche lo stack;
- si attiva un riciclo automatico, impostato di default a 1740 minuti ed entra in azione indipendentemente dal fatto ci siano utenti che stiano lavorando o meno (in genere programmato per la notte). Il riciclo automatico a tempo può essere disabilitato se necessario, oppure programmato ad un orario specifico tramite le opzioni presenti nella Recycling della configurazione dello stesso pool;
- Viene eseguita l’apertura una seconda sessione di QualiWare nello stesso browser, indifferentemente se si desideri accedere col medesimo utente o uno diverso. In questo caso, il programma avverte che la sessione scade;
- I file contenuti nelle cartelle di installazione dell’applicazione vengono aggiornati, ad esempio a seguito di un aggiornamento o dell’intervento di un programma installato sul server quale ad esempio un antivirus (*);
- Il time out di sessione impostato sull’application pool è inferiore a 1 minuto, valore che è comunque altamente sconsigliato e non c’è ragione per impostarlo (di default è 20 minuti e non conviene modificarlo).
Sull’app, la scadenza non programmata della sessione può essere dovuta anche ai seguenti motivi:
- Non si sta utilizzando una connessione HTTPS
- Il dispositivo Android è stato aggiornato con la versione di Chrome che blocca i cookie di terza parte (questo avverrà entro la fine del 2024). In questo caso, è necessario installare la versione 2023.02.03 del back-end e la versione dell’app 9.3.0, entrambe rilasciate in marzo 2024, o successive.
- Il dispositivo è stato messo in stand-by con l’app aperta. Al riavvio si può presentare il messaggio “Sessione scaduta” in quanto si è interrotta la comunicazione con il server per un tempo maggiore del time-out impostato in IIS, che, come detto, è di 20 minuti.
(*) questo tipo di scadenza può essere prevenuta inserendo:
fcnMode=”Disabled”
dopo la stringa “<httpRuntime” nel file “web.config”.
Dalla versione 2023.02.07 questa modifica viene apportata automaticamente al file “web.config”. Da notare che, in presenza di questa configurazione, ogni aggiornamento delle cartelle dell’applicazione richiederà necessariamente il riavvio dell’application pool per essere effettivo.
Scadenza programmata
Dalle release 2023.02.00 in avanti, QualiWare consente d’attivare e personalizzare il time out del sistema a seconda delle necessità. La gestione della scadenza sessione in QualiWare avviene nella Console di amministrazione: Impostazioni generali > Privacy e sicurezza > Time out sessione (minuti).
La funzione di time out è richiesta dalle Normative GMP (Good Manufacturing Practice), dov’è previsto che tutti gli applicativi si debbano scollegare dopo un determinato tempo d’inattività.
Una volta che l’Amministratore di sistema ha definito il time out, QualiWare chiude la sessione appena l’inattività dell’utente sulla scheda raggiunge il tempo limite impostato. Trenta secondi prima della scadenza della sessione il sistema avvisa l’utente sul tempo rimanente.
Nota
QualiWare viene installato senza un time out impostato, lasciando di conseguenza la decisione direttamente al cliente.
Registrazione di avvio e termine di sessioni e applicazione
Dalla versione 2023.02.03 è possibile abilitare la registrazione dell’avvio dell’avvio e del termine di sessioni e applicazione su un file denominato “session.log” contenuto nella cartella di installazione di QualiWare.
L’abilitazione avviene aggiungendo la chiave
LogSessions=S
nella sezione [CommandSettings] del file qw.ini.
In questo modo è possibile avere una cronologia precisa degli eventi di apertura e chiusura delle sessioni, con ID sessione e indirizzo IP, nonchè la registrazione degli eventi di avvio e termine applicazione, che si verificano quando il pool viene riciclato oppure quando viene effettuata una modifica del contenuto della sottocartella “bin”, eventualmente a seguito di un aggiornamento. Questi ultimi sono caratterizzati dalla presenza di una registrazione “Application End” nel log, seguita dalla causa della scadenza.
Questo può aiutare a comprendere la dinamica che ha portato alla scadenza di una sessione non programmata.