2013-05-29 76 views
2

我已經使用Spring Security創建了一個應用程序。在春季安全上下文文件我已經添加了下面的一段代碼:註銷Spring Security不起作用

<http auto-config="true"> 
    <intercept-url pattern="/index.jsp" access="ROLE_ADMIN" /> 
    <intercept-url pattern="/metrics.jsp#chart" access="ROLE_ADMIN" /> 
    <intercept-url pattern="/metrics.jsp" access="ROLE_ADMIN" /> 
    <intercept-url pattern="/j_spring_security_logout#chart" access="ROLE_ADMIN" /> 
    <form-login login-page="/login.jsp" authentication-failure-url="/loginerror.jsp" default-target-url="/index.jsp" /> 
    <logout logout-success-url="/login.jsp" invalidate-session="true" delete-cookies="JSESSIONID" /> 
</http> 

在我加入以下代碼的應用程序上下文文件:

<bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor"> 
    <property name="cacheSeconds" value="0" /> 
    <property name="useExpiresHeader" value="true" /> 
    <property name="useCacheControlHeader" value="true" /> 
    <property name="useCacheControlNoStore" value="true" /> 
</bean> 

在應用程序的頁面(我用JSP),我已經添加了註銷按鈕下面的代碼:

<a href="j_spring_security_logout" class="ui-btn-right">Logout</a> 

那麼,當用戶點擊該按鈕時,他將被重定向到登錄頁面,但他仍然可以去其他頁面這是不應該發生的,有誰知道問題出在哪裏?我錯過了什麼嗎?提前致謝!

+1

不是應該' devnull

+0

@devnull,我們在同一時間回答:)。我已經在這裏回答了類似的問題http://stackoverflow.com/questions/16391219/how-to-log-out-using-spring-security/16391485#16391485 – Michael

+0

夥計們,我添加了/符號:仍然是相同的行爲 – Anto

回答

1

使用

<a href="/j_spring_security_logout" class="ui-btn-right">Logout</a> 
0

在Servlet的上下文寫:

<mvc:interceptors> 
    <bean id="webContentInterceptor"class="org.springframework.web.servlet.mvc.WebContentInterceptor"> 
      <property name="cacheSeconds" value="0"/> 
      <property name="useExpiresHeader" value="false"/> 
      <property name="useCacheControlHeader" value="true"/> 
      <property name="useCacheControlNoStore" value="true"/> 
    </bean>  
</mvc:interceptors> 

及其相同:

response.setHeader("pragma", "no-cache");    
response.setHeader("Cache-control", "no-cache, no-store, must-revalidate"); 
response.setHeader("Expires", "0");