- Type Parameters:
A- the session data typeB- the stateless session data type
- All Implemented Interfaces:
JWTSessionStore<A,,B> SessionStore<A,JWTSession<A, B>>
A JWT session store implementation that stores sessions and their stateful data in-memory in a concurrent map.
- Since:
- 1.13
- Author:
- Jeremy Kuhn
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThe in-memory JWT session store builder. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longThe default session cleaning period in milliseconds:300000(i.e. 5 minutes).Fields inherited from class io.inverno.mod.session.AbstractSessionStore
expireAfterPeriod, maxInactiveInterval, sessionIdGenerator -
Method Summary
Modifier and TypeMethodDescriptionstatic <A,B> InMemoryJWTSessionStore.Builder <A, B> builder(JWTSessionIdGenerator<A, B> sessionIdGenerator, Reactor reactor, com.fasterxml.jackson.databind.ObjectMapper mapper, Class<B> statelessSessionDataType) Creates an in-memory JWT session store builder.static <A,B> InMemoryJWTSessionStore.Builder <A, B> builder(JWTSessionIdGenerator<A, B> sessionIdGenerator, Reactor reactor, com.fasterxml.jackson.databind.ObjectMapper mapper, Type statelessSessionDataType) Creates an in-memory JWT session store builder.Mono<JWTSession<A, B>> create()Creates a new session in the session store.Mono<JWTSession<A, B>> Returns the session identified by the specified session id.Returns the data of the session identified by the specified session id.getDataByTokenId(String tokenId) Returns the data of the session identified by the specified JWT token identifier (i.e.Returns the session id generator.Moves the session identified by the specified identifier to a new identifier.moveByTokenId(String tokenId, JOSEObject<JWTClaimsSet, ?> newSessionJWT) Moves the session identified by the specified JWT token identifier to the specified JWT session identifier.Removes the session identified by the specified identifier.removeByTokenId(String tokenId) Removes the session identified by the specified JWT token identifier (i.e.save(JWTSession<A, B> session) Saves the specified session.Methods inherited from class io.inverno.mod.session.AbstractSessionStore
getExpireAfterPeriod, getMaxInactiveInterval
-
Field Details
-
DEFAULT_CLEAN_PERIOD
public static final long DEFAULT_CLEAN_PERIODThe default session cleaning period in milliseconds:300000(i.e. 5 minutes).- See Also:
-
-
Method Details
-
builder
public static <A,B> InMemoryJWTSessionStore.Builder<A,B> builder(JWTSessionIdGenerator<A, B> sessionIdGenerator, Reactor reactor, com.fasterxml.jackson.databind.ObjectMapper mapper, Class<B> statelessSessionDataType) Creates an in-memory JWT session store builder.
- Type Parameters:
A- the session data typeB- the stateless session data type- Parameters:
sessionIdGenerator- a JWT session id generatorreactor- the reactormapper- an object mapperstatelessSessionDataType- the stateless session data type- Returns:
- an in-memory JWT session store builder
-
builder
public static <A,B> InMemoryJWTSessionStore.Builder<A,B> builder(JWTSessionIdGenerator<A, B> sessionIdGenerator, Reactor reactor, com.fasterxml.jackson.databind.ObjectMapper mapper, Type statelessSessionDataType) Creates an in-memory JWT session store builder.
- Type Parameters:
A- the session data typeB- the stateless session data type- Parameters:
sessionIdGenerator- a JWT session id generatorreactor- the reactormapper- an object mapperstatelessSessionDataType- the stateless session data type- Returns:
- an in-memory JWT session store builder
-
getSessionIdGenerator
Description copied from class:AbstractSessionStoreReturns the session id generator.
- Overrides:
getSessionIdGeneratorin classAbstractSessionStore<A,JWTSession<A, B>> - Returns:
- the session id generator
-
create
Description copied from interface:SessionStoreCreates a new session in the session store.
This shall physically create a new session in the data store.
- Specified by:
createin interfaceSessionStore<A,B> - Returns:
- a mono for creating a session
-
get
Description copied from interface:SessionStoreReturns the session identified by the specified session id.
- Specified by:
getin interfaceSessionStore<A,B> - Parameters:
sessionId- a session id- Returns:
- a mono emitting the session or an empty mono if no session exists with the specified identifier
-
getData
Description copied from interface:SessionStoreReturns the data of the session identified by the specified session id.
- Specified by:
getDatain interfaceSessionStore<A,B> - Parameters:
sessionId- a session id- Returns:
- a mono emitting the session data or an empty mono if no session exists with specified identifier or if a session exists which does not define any data
-
getDataByTokenId
Description copied from interface:JWTSessionStoreReturns the data of the session identified by the specified JWT token identifier (i.e. JTI).
- Specified by:
getDataByTokenIdin interfaceJWTSessionStore<A,B> - Parameters:
tokenId- the JWT token identifier extracted from the JWT session id claims set- Returns:
- a mono emitting the session data or an empty mono if no session exists with specified identifier or if a session exists which does not define any data
-
move
Description copied from interface:SessionStoreMoves the session identified by the specified identifier to a new identifier.
- Specified by:
movein interfaceSessionStore<A,B> - Parameters:
sessionId- a session idnewSessionId- a new session id- Returns:
- a mono for moving a session
- Throws:
IllegalStateException- if there is no session with the specified identifier or if a session already exists at the specified new identifier
-
moveByTokenId
public Mono<Void> moveByTokenId(String tokenId, JOSEObject<JWTClaimsSet, ?> newSessionJWT) throws IllegalStateExceptionDescription copied from interface:JWTSessionStoreMoves the session identified by the specified JWT token identifier to the specified JWT session identifier.
- Specified by:
moveByTokenIdin interfaceJWTSessionStore<A,B> - Parameters:
tokenId- a JWT token identifiernewSessionJWT- a new JWT session identifier- Returns:
- a mono for moving a session
- Throws:
IllegalStateException- if there is no session with the specified identifier or if a session already exists at the specified new identifier
-
remove
Description copied from interface:SessionStoreRemoves the session identified by the specified identifier.
- Specified by:
removein interfaceSessionStore<A,B> - Parameters:
sessionId- a session id- Returns:
- a mono for removing a session
-
removeByTokenId
Description copied from interface:JWTSessionStoreRemoves the session identified by the specified JWT token identifier (i.e. JTI).
- Specified by:
removeByTokenIdin interfaceJWTSessionStore<A,B> - Parameters:
tokenId- the JWT token identifier extracted from the JWT session id claims set- Returns:
- a mono for removing a session
-
save
public Mono<Void> save(JWTSession<A, B> session) throws IllegalArgumentException, IllegalStateExceptionDescription copied from interface:SessionStoreSaves the specified session.
Whether resolved session data are saved along with the session is implementation specific. Implementors must however at least guarantee that data that is explicitly set on a session using
Session.setData(Object)are saved.- Specified by:
savein interfaceSessionStore<A,B> - Parameters:
session- a session- Returns:
- a mono for saving a session
- Throws:
IllegalArgumentException- if the specified session does not originate from this session storeIllegalStateException- if the specified session does not exist in the store or if it was invalidated
-