Class HttpSessionHandshakeInterceptor
java.lang.Object
org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor
- All Implemented Interfaces:
HandshakeInterceptor
An interceptor to copy information from the HTTP session to the "handshake
attributes" map to be made available via
WebSocketSession.getAttributes()
.
Copies a subset or all HTTP session attributes and/or the HTTP session ID
under the key HTTP_SESSION_ID_ATTR_NAME
.
- Since:
- 4.0
- Author:
- Rossen Stoyanchev
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The name of the attribute under which the HTTP session id is exposed whencopyHttpSessionId
is "true". -
Constructor Summary
ConstructorDescriptionDefault constructor for copying all HTTP session attributes and the HTTP session id.HttpSessionHandshakeInterceptor
(Collection<String> attributeNames) Constructor for copying specific HTTP session attributes and the HTTP session id. -
Method Summary
Modifier and TypeMethodDescriptionvoid
afterHandshake
(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex) Invoked after the handshake is done.boolean
beforeHandshake
(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) Invoked before the handshake is processed.Return the configured attribute names to copy (read-only).boolean
Whether to copy all HTTP session attributes.boolean
Whether to copy the HTTP session id to the handshake attributes.boolean
Whether the HTTP session is allowed to be created.void
setCopyAllAttributes
(boolean copyAllAttributes) Whether to copy all attributes from the HTTP session.void
setCopyHttpSessionId
(boolean copyHttpSessionId) Whether the HTTP session id should be copied to the handshake attributes under the keyHTTP_SESSION_ID_ATTR_NAME
.void
setCreateSession
(boolean createSession) Whether to allow the HTTP session to be created while accessing it.
-
Field Details
-
HTTP_SESSION_ID_ATTR_NAME
The name of the attribute under which the HTTP session id is exposed whencopyHttpSessionId
is "true".- See Also:
-
-
Constructor Details
-
HttpSessionHandshakeInterceptor
public HttpSessionHandshakeInterceptor()Default constructor for copying all HTTP session attributes and the HTTP session id. -
HttpSessionHandshakeInterceptor
Constructor for copying specific HTTP session attributes and the HTTP session id.- Parameters:
attributeNames
- session attributes to copy- See Also:
-
-
Method Details
-
getAttributeNames
Return the configured attribute names to copy (read-only). -
setCopyAllAttributes
public void setCopyAllAttributes(boolean copyAllAttributes) Whether to copy all attributes from the HTTP session. If set to "true", any explicitly configured attribute names are ignored.By default this is set to either "true" or "false" depending on which constructor was used (default or with attribute names respectively).
- Parameters:
copyAllAttributes
- whether to copy all attributes
-
isCopyAllAttributes
public boolean isCopyAllAttributes()Whether to copy all HTTP session attributes. -
setCopyHttpSessionId
public void setCopyHttpSessionId(boolean copyHttpSessionId) Whether the HTTP session id should be copied to the handshake attributes under the keyHTTP_SESSION_ID_ATTR_NAME
.By default this is "true".
- Parameters:
copyHttpSessionId
- whether to copy the HTTP session id.
-
isCopyHttpSessionId
public boolean isCopyHttpSessionId()Whether to copy the HTTP session id to the handshake attributes. -
setCreateSession
public void setCreateSession(boolean createSession) Whether to allow the HTTP session to be created while accessing it.By default set to
false
.- See Also:
-
isCreateSession
public boolean isCreateSession()Whether the HTTP session is allowed to be created. -
beforeHandshake
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws ExceptionDescription copied from interface:HandshakeInterceptor
Invoked before the handshake is processed.- Specified by:
beforeHandshake
in interfaceHandshakeInterceptor
- Parameters:
request
- the current requestresponse
- the current responsewsHandler
- the target WebSocket handlerattributes
- the attributes from the HTTP handshake to associate with the WebSocket session; the provided attributes are copied, the original map is not used.- Returns:
- whether to proceed with the handshake (
true
) or abort (false
) - Throws:
Exception
-
afterHandshake
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, @Nullable Exception ex) Description copied from interface:HandshakeInterceptor
Invoked after the handshake is done. The response status and headers indicate the results of the handshake, i.e. whether it was successful or not.- Specified by:
afterHandshake
in interfaceHandshakeInterceptor
- Parameters:
request
- the current requestresponse
- the current responsewsHandler
- the target WebSocket handlerex
- an exception raised during the handshake, ornull
if none
-