Abbiamo un'applicazione web basata su MVC 5.
Parte della funzionalità include la visualizzazione della struttura gerarchica come un albero (io uso questo componente JavaScript: link )
Albero è visualizzato nella parte sinistra dello schermo ed è profondo diversi livelli. Ogni livello rappresenta un tipo di oggetto diverso. Quando l'utente fa clic sul nodo dell'albero viene effettuata una chiamata AJAX e i dettagli dell'oggetto esteso vengono ricevuti come Vista parziale e visualizzati nella parte destra dello schermo utilizzando la chiamata jQuery in questo modo: $('#EventTreeElement').html(data);
La stessa logica viene utilizzata per modificare / creare i nodi dell'albero di cancellazione.
Tutto ciò funziona come progettato, nessun problema qui. Fino alla scadenza della sessione di accesso utente. Quando ciò accade dopo che l'utente seleziona un'altra applicazione del nodo dell'albero restituisce una vista per la schermata di accesso e viene visualizzata come un dettaglio dell'albero che confonde gli utenti finali.
Ho implementato una soluzione rapida e semplice per questo in cui ho un elemento nascosto nella pagina di accesso e prima di chiamare $('#EventTreeElement').html(data);
Per prima cosa controlla se data
contiene il testo per quell'elemento nascosto. In tal caso, viene visualizzata una finestra di dialogo in cui la sessione di accesso è scaduta e reindirizza l'utente alla pagina di accesso.
Tuttavia, poiché la maggior parte delle correzioni "rapide e facili" sembra più di kludge che di una soluzione reale. Ad esempio, ho bisogno di implementare nuovamente la stessa logica di business in tutti i casi in cui l'utente ha fatto clic sui pulsanti "Modifica", "Elimina" o "Crea" per gli elementi dell'albero.
Quali sono le "appropriate" soluzioni architettoniche per questo?
In una delle nostre altre applicazioni legacy ogni pagina include il codice JavaScript che avvia il conto alla rovescia per la durata della sessione di accesso utente. Quando il conto alla rovescia raggiunge lo 0 appare la finestra di dialogo che informa che la sessione è scaduta. Immagino di poter fare qualcosa del genere ma sembra anche un kludge (evento anche se so che alcuni siti web delle banche usano lo stesso approccio).