Spring Security 3 と JSF 2 を統合して、ユーザーがナビゲートするときに新しい URL を表示する代わりに、JSF をデフォルトとして機能させたままにし、ページをナビゲートするためにリダイレクトJSF 属性を使用せずに古い URL を保持することは可能ですか?
これに関するドキュメントが見つかりません。著者が見つけたすべての記事は、移動時にページをリダイレクトします。
ありがとう
Spring Security 3 と JSF 2 を統合して、ユーザーがナビゲートするときに新しい URL を表示する代わりに、JSF をデフォルトとして機能させたままにし、ページをナビゲートするためにリダイレクトJSF 属性を使用せずに古い URL を保持することは可能ですか?
これに関するドキュメントが見つかりません。著者が見つけたすべての記事は、移動時にページをリダイレクトします。
ありがとう
デフォルトでは、FilterSecurityInterceptor はリクエストごとに 1 回だけ実行され、URL に変更がない限りセキュリティの再チェックは行われませんが、JSP/JSF 転送を使用すると、ページは現在のリクエストへの応答としてレンダリングされ、URL はbrowser には、前のページのアドレスが含まれています。そのため、applicationContext の http 要素で once-per-request 属性を false に設定するだけで、セキュリティの再チェックが強制されます。
<http auto-config="true" use-expressions="true" once-per-request="false">
web.xml の springSecurityFilterChain filter-mapping に転送用のディスパッチャーを追加します。
<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>
詳細情報
または、次のようにパラメーター faces-redirect=true を結果に追加して、ページのリダイレクトを有効にすることもできます。
<h:form>
<h:commandButton action="page1?faces-redirect=true" value="Page1" />
</h:form>
ただし、あなたのケースでは GET リクエストの方が適切に見えることも覚えておいてください。BalusCが言うように、ブックマーク可能なページ間のナビゲーションに POST を使用することはお勧めできません。
したがって、<h:link>
or<h:button>
または faces-redirect=true を使用して GET を行うと、GET リクエストも発生します。
以下も参照してください。