2

Spring Security 3 と JSF 2 を統合して、ユーザーがナビゲートするときに新しい URL を表示する代わりに、JSF をデフォルトとして機能させたままにし、ページをナビゲートするためにリダイレクトJSF 属性を使用せずに古い URL を保持することは可能ですか?

これに関するドキュメントが見つかりません。著者が見つけたすべての記事は、移動時にページをリダイレクトします。

ありがとう

4

1 に答える 1

1

デフォルトでは、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 リクエストも発生します。

以下も参照してください。

于 2012-07-02T04:44:36.093 に答える