0

私の問題はこれに似ています:

sitemesh デコレータの Spring セキュリティ タグ

Spring セキュリティを備えた Spring MVC プロジェクトでサイトメッシュを使用しています。私の 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>
</filter-mapping>

<filter>
  <filter-name>sitemesh</filter-name>
  <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

また、サイトメッシュで装飾されたすべてのページに含まれる NavBar.jsp (Spring MVC Bootstrap ショーケースを使用しています) は、次のようになります。

<div class="navbar-collapse collapse">  
      <ul class="nav navbar-nav">

        <security:authorize ifAnyGranted="ROLE_UPDATE">
            <li ><a href="<c:url value="/dataupdate" />">Update</a></li>
        </security:authorize>

        <security:authorize ifAnyGranted="ROLE_ADMIN">
            <li ><a href="<c:url value="/settings" />">Settings</a></li>
        </security:authorize>

        <li><a href="j_spring_security_logout">Logout</a></li>                           
      </ul>
    </div>   

すべてが期待どおりに機能します (つまり、認証されたユーザーが適切なロールを持っている場合にのみナビゲーションバーの項目が表示されます) が、デフォルトの Spring Security ログインページは装飾されていません。web.xml の Sitemesh フィルターを Spring Security フィルターの上に移動することで修正できますが、NavBar.jsp のセキュリティ タグが機能しなくなります。

両方を持つ方法はありますか?

4

2 に答える 2

1

この問題を修正するために、カスタム login.jsp ページを実装し、sitemesh がそれを取り上げました。

于 2013-11-05T09:11:01.970 に答える
0

フィルターの順序を変更して試してみてください..うまくいくはずです

于 2013-11-05T12:29:53.507 に答える