SpringSession+redisのプロジェクトでの使用
3645 ワード
詳細
1、前言、sessionはずっと私たちがクラスタを作るときに解決しなければならない難題であり、過去にserlvetコンテナから解決することができた.例えば、オープンソースservletコンテナ-tomcatが提供するtomcat-redis-session-manager、memcached-session-managerなど、springSessionを通じてクラスタ内のsessionの共有を実現することができる.
Spring Sessionは、ユーザー・セッション情報を管理するためのAPIと実装を提供し、アプリケーション・コンテナ固有のソリューションに限定されることなく、クラスタ・セッションをサポートします.
2、サポート機能
1)、springSessionは、redis、mysqlなどのサードパーティのストレージコンテナにセッションを格納することをサポートし、フレームワークはredis、jdbcなどの複数のセッションを格納するコンテナを提供する.
2)、複数のブラウザセッション-Spring Sessionは、単一のブラウザインスタンス(つまりGoogleのような複数の認証済みアカウント)で複数のユーザーのセッションを管理し、同じブラウザで同じWebサイトで複数のセッション共有をサポートします.
3)Restful API、Spring SessionはヘッダファイルにセッションIDを提供してRESTful APIを使用することを許可する
4)、WebSocket-HttpSessionがWebSocketメッセージを受信する時に活動を維持する能力を提供する.
3、プロジェクト統合springSession、springbootを例に、redisストレージsessionを使用する.https://docs.spring.io/spring-session/docs/1.3.1.RELEASE/reference/html5/
1)、pomの追加
2)、springsessionの構成
3)、springSessionのセッションID伝達方式インタフェース
1.Cookie方式:CookieHttpSessionStrategy
2.http header方式:HeaderHttpSessionStrategy
デフォルトはクッキー方式で実現されます
4)、デフォルトのセッションId伝達方式に基づいて、クッキー構成を追加する
その他の構成
5)、springSessionクッキーベースの構成
4、以上の配置に基づいて、プロジェクトの中でspringSessionを使うことができて、用法とsessionの用法は一致します
1、前言、sessionはずっと私たちがクラスタを作るときに解決しなければならない難題であり、過去にserlvetコンテナから解決することができた.例えば、オープンソースservletコンテナ-tomcatが提供するtomcat-redis-session-manager、memcached-session-managerなど、springSessionを通じてクラスタ内のsessionの共有を実現することができる.
Spring Sessionは、ユーザー・セッション情報を管理するためのAPIと実装を提供し、アプリケーション・コンテナ固有のソリューションに限定されることなく、クラスタ・セッションをサポートします.
2、サポート機能
1)、springSessionは、redis、mysqlなどのサードパーティのストレージコンテナにセッションを格納することをサポートし、フレームワークはredis、jdbcなどの複数のセッションを格納するコンテナを提供する.
2)、複数のブラウザセッション-Spring Sessionは、単一のブラウザインスタンス(つまりGoogleのような複数の認証済みアカウント)で複数のユーザーのセッションを管理し、同じブラウザで同じWebサイトで複数のセッション共有をサポートします.
3)Restful API、Spring SessionはヘッダファイルにセッションIDを提供してRESTful APIを使用することを許可する
4)、WebSocket-HttpSessionがWebSocketメッセージを受信する時に活動を維持する能力を提供する.
3、プロジェクト統合springSession、springbootを例に、redisストレージsessionを使用する.https://docs.spring.io/spring-session/docs/1.3.1.RELEASE/reference/html5/
1)、pomの追加
org.springframework.session
spring-session-data-redis
2)、springsessionの構成
@Configuration
//session 4
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 14400)
public class SpringSessionConfig {
}
3)、springSessionのセッションID伝達方式インタフェース
1.Cookie方式:CookieHttpSessionStrategy
2.http header方式:HeaderHttpSessionStrategy
デフォルトはクッキー方式で実現されます
4)、デフォルトのセッションId伝達方式に基づいて、クッキー構成を追加する
#cookie
server.session.cookie.name=MY_PROJECT_SESSION
#cookie
server.session.cookie.domain=regulus.com
# cookie ,
server.session.cookie.path=/
その他の構成
server.session.cookie.comment = # cookie。
server.session.cookie.domain = # cookie 。
server.session.cookie.http-only =#“HttpOnly” cookie。
server.session.cookie.max-age = # cookie ( )。
server.session.cookie.name = # cookie 。
server.session.cookie.path = # cookie 。
server.session.cookie.secure = #“Secure” cookie。
server.session.persistent = false # 。
server.session.store-dir = # 。
server.session.timeout = # ( )。
server.session.tracking-modes =# ( :“cookie”,“url”,“ssl”)。
5)、springSessionクッキーベースの構成
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 14400)
public class SpringSessionConfig {
@Bean
public CookieSerializer cookieSerializer(ServerProperties serverProperties) {
Cookie cookie = serverProperties.getSession().getCookie();
DefaultCookieSerializer bean = new DefaultCookieSerializer();
if (cookie.getMaxAge() != null) {
bean.setCookieMaxAge(cookie.getMaxAge());
}
if (cookie.getName() != null) {
bean.setCookieName(cookie.getName());
}
if (cookie.getPath() != null) {
bean.setCookiePath(cookie.getPath());
}
if (cookie.getDomain() != null) {
bean.setDomainName(cookie.getDomain());
}
if (cookie.getHttpOnly() != null) {
bean.setUseHttpOnlyCookie(cookie.getHttpOnly());
}
if (cookie.getSecure() != null) {
bean.setUseSecureCookie(cookie.getSecure());
}
return bean;
}
}
4、以上の配置に基づいて、プロジェクトの中でspringSessionを使うことができて、用法とsessionの用法は一致します