2012-07-01 3 views
2

Est-il possible d'intégrer Spring Security 3 et JSF 2, en conservant JSF par défaut, au lieu d'afficher la nouvelle URL lorsque l'utilisateur navigue, conserver l'ancienne URL, sans utiliser le rediriger Attribut JSF pour naviguer dans les pages?Intégration Spring Security 3 et JSF 2 sans redirection page

Je ne trouve pas de documentation à ce sujet. Tous les articles j'ai trouvé l'auteur rediriger la page lors de la navigation.

Merci

+0

Pouvez-vous être plus explicite comme un exemple? – Ravi

+0

Spring utilise l'URL pour vérifier si la page est sécurisée. En JSF par défaut, lorsque vous cliquez sur un bouton pour naviguer vers une autre page, l'URL ne change pas –

Répondre

1

Par défaut, le FilterSecurityInterceptor n'exécutera une fois par demande et ne pas faire de la sécurité un nouveau contrôle moins qu'il y ait changement dans l'URL, mais avec JSP/JSF transmet la page est affichée en réponse à la demande en cours et l'URL dans le navigateur contient l'adresse de la page précédente. Donc pour cela, il suffit de définir l'attribut une fois par requête à false dans votre élément http dans applicationContext, ce qui oblige à reconfirmer la sécurité.

<http auto-config="true" use-expressions="true" once-per-request="false"> 

et ajouter un répartiteur pour les attaquants dans le filtre-mapping springSecurityFilterChain dans votre web.xml

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

Plus info

Alternativement, vous pouvez également activer la redirection de la page par le paramètre faces- annexant rediriger = true pour le résultat comme ceci:

<h:form> 
    <h:commandButton action="page1?faces-redirect=true" value="Page1" /> 
</h:form> 

Mais rappelez-vous aussi que dans votre cas, la requête GET semble plus appropriée et que BalusC dit pas bonne pratique pour utiliser POST pour la navigation de page à page signetable.

GET utilise <h:link> ou <h:button> ou faces-redirect = true provoque également une requête GET.

Voir aussi:

+0

Désolé de retarder le test. Cela n'a pas fonctionné. Je dois toujours utiliser faces-redirect = true pour que la sécurité fonctionne. –

+0

J'accepte votre réponse, mais j'ai toujours besoin de faire page1? Faces-redirect = true même avec toute cette configuration. –

+0

Oui Ed, je suis désolé pour cela je vais le tester plus largement et ouvrir un bug avec Spring. Ou si vous pensez que vous avez fait assez de recherches s'il vous plaît poster un bug sur leur site et faites le moi savoir. – Ravi

Questions connexes