2010-08-06 6 views
1

Je crée une application Web dans laquelle certaines pages sont protégées par une connexion. J'ai créé un domaine de la sécurité JDBC dans GlassFish pour cela, et utilisé l'authentification de formulaire (similaire à la méthode described here)Problème avec le transfert JSF et la contrainte de sécurité

J'utilise des règles de navigation pour rediriger l'utilisateur vers les zones sécurisées du site:

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

Cela fonctionne très bien. Mais si je saute la balise de redirection dans le cas de navigation, l'URL de la page ne change pas. Et dans ce cas, un utilisateur non authentifié peut accéder à la page sécurisée.

Quelle est la meilleure façon de procéder? S'assurer que la page est redirigée au lieu d'être redirigée est assez bon? Devrais-je écrire du code dans chaque page sécurisée qui vérifie si l'utilisateur est connecté ou non?

Répondre

0

L'utilisation de POST pour la navigation de page à page est considérée comme une mauvaise pratique. N'utilisez pas JSF h:commandLink ou h:commandButton pour une navigation simple de page à page. Les deux génère un formulaire POST qui est totalement inutile et SEO-hostile pour la navigation simple. Utilisez plutôt h:link ou h:button à la place. Il rend respectivement un lien GET et un formulaire GET.

Si vous envoyez quand même un formulaire POST et que la page de résultats est différente de la page du formulaire, l'utilisation de PRG (Post-Redirect-Get) pattern est considérée comme une bonne pratique. Vous pouvez utiliser <redirect/> pour cela.

Questions connexes