2016-04-01 17 views
8

私はRESTで春のセキュリティを使用しており、私のログアウト方法のエンドポイントとしてURL(/logout)を使用しています。しかし、このメソッドを呼び出した後、それは私に(/login?logout)にリダイレクトされます、私はこれが春であることを知っていますlogOutSuccessUrl。そして私はリダイレクションを取り除きたい。これは私のコードです:春のセキュリティ - ログアウトのリダイレクトを無効にする

protected void configure(HttpSecurity http) throws Exception { 

    http.authorizeRequests() 
     .antMatchers("/login").permitAll() 
     .anyRequest().fullyAuthenticated() 
     .and().requiresChannel().anyRequest().requiresSecure() 
     .and().httpBasic().disable().logout() 
     .disable() 
     // .logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)) 
      .csrf().disable(); 

} 

私はHttpStatusReturningLogoutSuccessHandlerを使用しようとしたが、それは動作しませんでした、とさえlogoutSuccessUrl()を設定すると、何も変更しません。

このリダイレクトを無効にするにはどうすればよいですか?

答えて

2

このメソッドを使用:コードに続いて

.logout().logoutSuccessUrl("enter address here where you want to go after logout") 
+1

OPはRESTクライアント(おそらくブラウザからのAJAXリクエスト)から呼び出されているのでリダイレクトを取り除きたいと思っています –

+1

私はすでにこれを試していますリダイレクト – uncallable

13

が私の作品(それはlogout().disable()を持っていないことに注意してください)

http.logout().permitAll(); 
http.logout().logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK))); 
+0

私はすでにこれを試して、まだリダイレクトを持っています – uncallable

+1

spのログレベルを設定してみてくださいリングセキュリティをデバッグするには、ヒントが得られるかもしれません。春のブートを使用している場合は、application.propertiesに 'logging.level.org.springframework.security = DEBUG'を追加することができます –

+0

@uncallable動作させましたか?私は同様の問題を抱えています。すべてのソリューションを試して、何も動作しません。 – ddd

0

FooのXML設定をお使いの方は、ここでスニペットの等価がありますTahir Akhtarによって与えられたものに対して。 <http>要素内

、次のように<logout>要素を設定:

<logout 
    logout-url   = "/some/path/for/logout" 
    invalidate-session = "true" 
    delete-cookies  = "JSESSIONID" 
    success-handler-ref = "httpStatusReturningLogoutSuccessHandler" 
/> 

、次のようにhttpStatusReturningLogoutSuccessHandler Beanを定義します。

<bean 
    id  = "httpStatusReturningLogoutSuccessHandler" 
    class = "org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler" 
/> 
1

あなたはこの

をしようとする場合がありますhttp.logou logoutRequestMatcher(新しいAntPathRequestMatcher( "/ thisistomisleadlogoutfilter")); t()。

これは/ thisistomisleadlogoutfilterをlogin-logoutに効果的にリダイレクトします。

.logout() 
.logoutUrl("/api/user/logout") 
.permitAll() 
.logoutSuccessHandler((httpServletRequest, httpServletResponse, authentication) -> { 
    httpServletResponse.setStatus(HttpServletResponse.SC_OK); 
}) 
.and() 

直後クリーンHTTP_OK(200)を返します。そのように、あなたは何の受け入れ答えはまだ存在しないので、私は私のために働いていた私の解決策を、ポストので、代わりに

3

を/ログアウトを使用することができるはずです成功したログアウト - 春はこの場合リダイレクトされません

関連する問題