@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2022 the original author or authors .
* Copyright 2002 - 2023 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -42,11 +42,11 @@ public class CookieWebSessionIdResolver implements WebSessionIdResolver {
@@ -42,11 +42,11 @@ public class CookieWebSessionIdResolver implements WebSessionIdResolver {
private Duration cookieMaxAge = Duration . ofSeconds ( - 1 ) ;
@Nullable
private Consumer < ResponseCookie . ResponseCookieBuilder > cook ieI nitializer = null ;
private Consumer < ResponseCookie . ResponseCookieBuilder > initializer = null ;
/ * *
* Set the name of the cookie to use for the session ID .
* Set the name for the session id cookie .
* < p > By default set to "SESSION" .
* @param cookieName the cookie name
* /
@ -63,32 +63,32 @@ public class CookieWebSessionIdResolver implements WebSessionIdResolver {
@@ -63,32 +63,32 @@ public class CookieWebSessionIdResolver implements WebSessionIdResolver {
}
/ * *
* Set the value for the "Max-Age" attribute of the cookie that holds the
* session ID .
* < p > For the range of values see { @link ResponseCookie # getMaxAge ( ) } .
* < p > By default set to - 1 .
* Set the "Max-Age" attribute for the session id cookie .
* < p > By default set to - 1 in which case the cookie is removed when the
* browser is closed .
* @param maxAge the maxAge duration value
* @see ResponseCookie # getMaxAge ( )
* /
public void setCookieMaxAge ( Duration maxAge ) {
this . cookieMaxAge = maxAge ;
}
/ * *
* Get the configured "Max-Age" attribute value for the session cookie .
* Get the configured "Max-Age" for the session id cookie .
* /
public Duration getCookieMaxAge ( ) {
return this . cookieMaxAge ;
}
/ * *
* Add a { @link Consumer } for a { @code ResponseCookieBuilder } that will be invoked
* for each cookie being built , just before the call to { @code build ( ) } .
* @param initializer consumer for a cookie builder
* Add a { @link Consumer } to further initialize the session id cookie
* after { @link # getCookieName ( ) } and { @link # getCookieMaxAge ( ) } are applied .
* @param initializer consumer to initialize the cookie with
* @since 5 . 1
* /
public void addCookieInitializer ( Consumer < ResponseCookie . ResponseCookieBuilder > initializer ) {
this . cook ieI nitializer = this . cook ieI nitializer ! = null ?
this . cook ieI nitializer. andThen ( initializer ) : initializer ;
this . initializer = this . initializer ! = null ?
this . initializer . andThen ( initializer ) : initializer ;
}
@ -115,21 +115,19 @@ public class CookieWebSessionIdResolver implements WebSessionIdResolver {
@@ -115,21 +115,19 @@ public class CookieWebSessionIdResolver implements WebSessionIdResolver {
exchange . getResponse ( ) . getCookies ( ) . set ( this . cookieName , cookie ) ;
}
private ResponseCookie initSessionCookie (
ServerWebExchange exchange , String id , Duration maxAge ) {
ResponseCookie . ResponseCookieBuilder cookieBuilder = ResponseCookie . from ( this . cookieName , id )
private ResponseCookie initSessionCookie ( ServerWebExchange exchange , String id , Duration maxAge ) {
ResponseCookie . ResponseCookieBuilder builder = ResponseCookie . from ( this . cookieName , id )
. path ( exchange . getRequest ( ) . getPath ( ) . contextPath ( ) . value ( ) + "/" )
. maxAge ( maxAge )
. httpOnly ( true )
. secure ( "https" . equalsIgnoreCase ( exchange . getRequest ( ) . getURI ( ) . getScheme ( ) ) )
. sameSite ( "Lax" ) ;
if ( this . cook ieI nitializer ! = null ) {
this . cook ieI nitializer. accept ( cookieB uilder) ;
if ( this . initializer ! = null ) {
this . initializer . accept ( b uilder) ;
}
return cookieB uilder. build ( ) ;
return b uilder. build ( ) ;
}
}