Il mio capo mi ha chiesto di modificare la nostra app Web Java in modo che gli utenti non possano accedere a luoghi nella nostra app Web digitando gli URL nella barra dei percorsi del browser.
Le ho detto che non posso disabilitare le barre di posizione.
Le ho detto che il modo in cui solitamente viene fatto è avviare una WebApp in una nuova finestra del browser personalizzata senza inserire una barra della posizione.
Questo non era accettabile per lei.
Ho già una classe filtro Java impostata per applicare varie regole. Quindi, stavo pensando a questo approccio
-
Implementa una funzione javascript system write "WriteFlagCookie" per scrivere un cookie ogni volta che un utente avvia un GET facendo clic su un link o un pulsante.
-
Ovunque la WebApp esegua un reindirizzamento o un forward, metta una variabile flag, dica "wasRedirected" nella sessione HTTP.
-
Nel mio filtro, intercetti ogni richiesta e controlla il tipo di richiesta.
-
Se si tratta di un POST, so che un essere umano non ha inserito l'URL nel browser, quindi l'ho lasciato passare automaticamente.
-
Se è un GET, cerca un cookie generato da javascript o il flag memorizzato nella sessione per indicare un reindirizzamento o un inoltro. Se non trovo nessuno dei due, rimanda l'utente alla pagina da cui ha appena cercato di uscire.
Anche se sarà molto lavoro, sembra troppo semplice per essere adeguato.
C'è comunque un modo per mordermi in culo?
Il mio capo vuole risolvere due problemi
-
Gli utenti eseguono schermate fuori sequenza e ricevono messaggi di errore. Ciò include i moduli multischermo (che dobbiamo conservare) e gli utenti che utilizzano un pulsante Indietro.
-
Impedire all'utente di lasciare determinate pagine e andare in altre parti dell'applicazione fino a quando non compila ciò che vogliamo che compili su quegli schermi.
Ho idee su come risolvere # 1 & # 2, anche laborioso, ma al mio capo piace l'idea di disabilitare gli URL di digitazione per la navigazione per una soluzione completa.
Forse una volta che vede quanto lavoro è coinvolto nella disattivazione della navigazione digitata, posso commercializzarla solo per risolvere quei problemi.
Grazie
Steve