Domanda

Sto facendo un'applicazione web in cui alcune pagine sono protette da login. Ho creato un regno JDBC di sicurezza in GlassFish per questo, e l'autenticazione modulo utilizzato (simile al metodo descritta qui )

sto usando Navigazione regole per reindirizzare l'utente alle aree protette del sito:

<navigation-case>
        <from-outcome>showResults</from-outcome>
        <to-view-id>/SecureUser/Reservation/New/AvailableResults.xhtml</to-view-id>
        <redirect/>
</navigation-case>
(etc...)

Questo funziona bene. Ma se mi salta il tag di reindirizzamento nella navigazione caso, l'URL della pagina non cambia. E in quel caso, un utente non autenticato è in grado di accedere alla pagina protetta.

Qual è il modo migliore per andare su questo? Fare in modo che la pagina viene reindirizzato al posto di inoltrato è abbastanza buono? Dovrei scrivere codice in ogni pagina protetta che controlla se l'utente è loggato o no?

È stato utile?

Soluzione

Utilizzando POST per la navigazione da pagina a pagina viene considerata una cattiva pratica. Non usare JSF h:commandLink o h:commandButton per una semplice navigazione da pagina a pagina. Entrambi genera una forma POST che è del tutto inutile e SEO-ostile per la navigazione semplice. Piuttosto utilizzare h:link o h:button invece. Rende un link di vaniglia GET plain e la forma GET rispettivamente.

Se si invia un modulo POST comunque e la pagina di risultato è diverso dalla pagina del modulo, quindi utilizzando PRG (post-Redirect-Get) modello è considerato buona pratica. È possibile utilizzare <redirect/> per questo.

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