Giriş
Açıklaması şöyle. Yani çıkış yapan kullanıcının her türlü bilgisini silmek gerekir
On Logout you have to correctly destroy the existing session and its association with any data. Otherwise, these sessions could be used after logout. (It is not enough to remove the cookie from client browser!)
clearAuthentication metodu
Bu seçeneğin varsayılan değeri true. Yani aslında bir şey yapmaya gerek yok.
Örnek
Şöyle yaparız
Açıklaması şöyle
JSESSIONID çerez olduğu için HttpHeaders sınıfının "Set-Cookie" alanı ile gönderilir. Bu alanda kaydedilecek Cookie'lerin listesi vardır. Bazı Cookie'ler remember-me, JSESSIONID olabilir.
Bu seçeneğin varsayılan değeri true. Yani aslında bir şey yapmaya gerek yok.
Örnek
Şöyle yaparız
logout()
.clearAuthentication(false)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/?logout")
.permitAll();
deleteCookies metoduAçıklaması şöyle
By default, when logging out of a Spring application, Spring removes the current session (technically it invalidates it) along with the corresponding session cookie (typically JSESSIONID). Finally, Spring redirects the user to a new page (which by default is /login?logout). Other than removing any ID and access tokens from your application’s session, nothing OAuth 2.0/OIDC specific happens.Örnek
JSESSIONID çerez olduğu için HttpHeaders sınıfının "Set-Cookie" alanı ile gönderilir. Bu alanda kaydedilecek Cookie'lerin listesi vardır. Bazı Cookie'ler remember-me, JSESSIONID olabilir.
JSESSIONID içeriği şuna benzer
"JESSIONID=BA16....;Path=/;HttpOnly"
JESSIONID çerezi servlet container tarafından yönetilir. Bu metodu JSESSIONID ile çağırırsak session bilgisi de silinir. Şöyle yaparız.
Bu seçeneğin varsayılan değeri true. Yani aslında bir şey yapmaya gerek yok.
Örnek
Şöyle yaparız.
Örnek
Şöyle yaparız.
Normalde Http 301 göndererek /login sayfasına tekrar yönlendirilir. Başka bir HTTP kodu göndermek için bu metodu kullanırız.
Örnek
Şöyle yaparız
Açıklaması şöyle. Normalde Http 301 göndererek /login sayfasına tekrar yönlendirilir. Eğer /login sayfası yerine başka bir sayfaya yönlendirmek istersek bu metodu kullanırız.
Şöyle yaparız
Normalde /logout sayfası kullanılır. Bu sayfa yerine başka bir sayfa kullamak istersek bu metodu kullanınırz.
Örnek
Şöyle yaparız.
Örnek saçma ancak herkesin logout olabilmesi için şöyle yaparız.
logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.deleteCookies("auth_code", "JSESSIONID")
.invalidateHttpSession(true)
invalidateHttpSessionBu seçeneğin varsayılan değeri true. Yani aslında bir şey yapmaya gerek yok.
Örnek
Şöyle yaparız.
http...
.and().logout().invalidateHttpSession(false)
logoutRequestMatcher metoduÖrnek
Şöyle yaparız.
http
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout-gimli-user")).permitAll()
.deleteCookies("JSESSIONID", "sessionid" /*, "sessdetail", "countfr"*/ );
logoutSuccessHandler metoduNormalde Http 301 göndererek /login sayfasına tekrar yönlendirilir. Başka bir HTTP kodu göndermek için bu metodu kullanırız.
Örnek
Şöyle yaparız
http.logout()
.logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)));
logoutSuccessUrl metoduAçıklaması şöyle. Normalde Http 301 göndererek /login sayfasına tekrar yönlendirilir. Eğer /login sayfası yerine başka bir sayfaya yönlendirmek istersek bu metodu kullanırız.
After we logout, redirect to root page, by default Spring will send you to /login?logoutÖrnek
Şöyle yaparız
@Configuration
static class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
// allow anonymous access to the root page
.antMatchers("/").permitAll()
// all other requests
.anyRequest().authenticated()
// After we logout, redirect to root page,
// by default Spring will send you to /login?logout
.and().logout().logoutSuccessUrl("/")
// enable OAuth2/OIDC
.and().oauth2Login();
}
}
Örnek
Şöyle yaparız.httpSecurity.logout().logoutSuccessUrl("/login?logout");
logoutURL metoduNormalde /logout sayfası kullanılır. Bu sayfa yerine başka bir sayfa kullamak istersek bu metodu kullanınırz.
Örnek
Şöyle yaparız.
http...
.and()
.logout()
.logoutUrl("/api/logout")
.logoutSuccessHandler(...)
Örnek
Şöyle yaparız.http.authorizeRequests().antMatchers("/settings").hasAuthority("Administrator")
.anyRequest().authenticated()
.and()
...
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.logoutSuccessHandler(logoutSuccessHandler)
.and()
...
permitAll metodu
ÖrnekÖrnek saçma ancak herkesin logout olabilmesi için şöyle yaparız.
http...
.logout()
.permitAll();
cok faydalı oldu, tesekkürler.
YanıtlaSil