2013-04-25 94 views
2

我想找到一種方法來設置一個URL,從系統中註銷我的用戶。這僅用於測試。現在我們使用的是默認登錄頁面春季secuirty如何使用Spring Security創建註銷?

這裏是我的春天secuirty.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
         http://www.springframework.org/schema/security 
         http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 


    <global-method-security pre-post-annotations="enabled" /> 

    <http use-expressions="true"> 
     <intercept-url access="hasRole('ROLE_VERIFIED_MEMBER')" pattern="/ask-union**" /> 
     <intercept-url access="hasRole('ROLE_VERIFIED_MEMBER')" pattern="/ask-welfare**" /> 
     <intercept-url pattern='/*' access='permitAll' /> 

     <form-login default-target-url="/ask-union" /> 

     <logout logout-success-url="/" /> 

     <session-management session-fixation-protection="newSession"> 
      <concurrency-control max-sessions="1"/> 
     </session-management> 

    </http> 

    <authentication-manager> 
     <authentication-provider> 
      <user-service> 
       <user name="[email protected]" password="testing" authorities="ROLE_VERIFIED_MEMBER" /> 
       ser-service> 

     </authentication-provider> 
    </authentication-manager> 
</beans:beans> 

回答

2

,如果你有一個鏈接此行添加到您的配置

<logout logout-url="/sign-out"/> 

然後然後它會將你註銷

(將它添加到你的註銷成功配置下面)

+0

沒有工作... – SJS 2013-04-25 19:47:47

+1

將需要更多的工作比這..發生了什麼?有沒有錯誤?他們是如何體現自己的? – rhinds 2013-04-26 08:06:54

+0

另外,根據@ cabbagery的例子,將logout-url連同logout-success-url一起滾入標籤 – rhinds 2013-04-26 08:07:55

0

仔細檢查你正在使用的URL - 絕對路徑應該是your-domain/projectPath/sign-out,按照SJS的例子。如果您的彈簧security.xml文件中的相關部分看起來像下面,應該工作:

<http use-expressions="true"> 

. . . 

    <logout 
     logout-success-url="/" 
     logout-url="/sign-out"/> 

如果你能夠通過身份驗證,然後簡單地瀏覽到這條道路,它應該讓您登錄出。如果它仍然不嘗試嘗試使用URL中指定的中間子目錄,即your-domain/projectPath/some-subdirectory/log-out

你能認證嗎?它可能不僅僅是註銷方面的失敗...

1

我對此有點遲了。但答案可能有助於其他人。

使用以下代碼。 logout-success-url是註銷後用戶需要的URL。

<http auto-config="true" use-expressions="true" access-denied-page="/denied">  
    <logout invalidate-session="true" logout-success-url="/landing" delete-cookies="JSESSIONID" /> 
</http> 
0

遲到了,但是爲了將來的參考 - 如果你有興趣看到安全過濾器如何實例和XML配置,看看下面的包:

org.springframework.security.config.annotation.web.configurers 

對於註銷過濾器配置,這將是LogoutConfigurer類。如果您查看LogoutConfigurer.createLogoutFilter()方法,您將看到如何創建默認的註銷過濾器。這意味着,你可以做在@Configuration類以下內容:

@Bean 
public LogoutFilter logoutFilter() { 
    // NOTE: See org.springframework.security.config.annotation.web.configurers.LogoutConfigurer 
    // for details on setting up a LogoutFilter 
    SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler(); 
    securityContextLogoutHandler.setInvalidateHttpSession(true); 

    LogoutFilter logoutFilter = new LogoutFilter("/", securityContextLogoutHandler); 
    logoutFilter.setLogoutRequestMatcher(new AntPathRequestMatcher("/logout")); 
    return logoutFilter; 
} 

如果你有,你就可以要麼進一步豆類或配置有豆拿起自動因爲它的方法名是logoutFilter()

相關問題