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:
Pouvez-vous être plus explicite comme un exemple? – Ravi
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 –