Spring Security,Sitemesh&标签库

时间:2013-11-04 19:22:20

标签: twitter-bootstrap spring-mvc spring-security sitemesh

我的问题与此类似:

Spring security tags in sitemesh decorator

我在使用Spring安全性的Spring MVC项目中使用sitemesh。我的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展示),它包含在sitemesh修饰的每个页面中,如下所示:

<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登录页面未进行装饰。我可以通过在Spring Security过滤器上方的web.xml中移动Sitemesh过滤器来解决这个问题,但是NavBar.jsp中的安全标记会停止工作。

我有两种方法可以同时拥有吗?

2 个答案:

答案 0 :(得分:1)

要解决此问题,我实现了一个自定义的login.jsp页面,而sitemesh只是选择了它。

答案 1 :(得分:0)

pelase更改过滤器的顺序并尝试..它应该工作