Jax*_*xox 19 java session spring-security
好的,我希望我的Web应用程序能够在多个Web服务器上使用HTTP会话.我也不能使用粘性会话或会话复制!
Spring Security处理HTTP会话的最佳实践是什么?Spring提供OOTB吗?或者它是否有选项将会话信息存储到数据库?SecurityContextPersistenceFilter
?
ger*_*tan 10
您可以将容器配置为使用JDBC将会话持久保存到数据库.如果使用tomcat,则可以配置JDBC会话持久性提供程序.我假设你也可以在其他容器上做类似的事情.
我在博客上记录了设置tomcat JDBC会话持久性的步骤:http://web.archive.org/web/20160417070959/http: //gerrydevstory.com/2013/08/21/tomcat-7-jdbc -session持久性/
总之,您需要在context.xml上进行如下配置:
<Manager className="org.apache.catalina.session.PersistentManager"
maxIdleBackup="10">
<Store className="org.apache.catalina.session.JDBCStore"
connectionURL="jdbc:mysql://localhost/mytomcat?user=root"
driverName="com.mysql.jdbc.Driver"
sessionAppCol="app_name"
sessionDataCol="session_data"
sessionIdCol="session_id"
sessionLastAccessedCol="last_access"
sessionMaxInactiveCol="max_inactive"
sessionTable="tomcat_sessions"
sessionValidCol="valid_session" />
</Manager>
Run Code Online (Sandbox Code Playgroud)
但是,maxIdleBackup="10"
上面表示只有在10秒不活动后才会将会话刷新到jdbc中.我不知道将它设置为0是否有效.
我想在没有粘性负载均衡器会话的情况下完成整个工作会很困难,例如:如何确保在下一个请求之前刷新会话更新?您无法保证下一个请求将由同一节点提供服务.
也许另一种选择是,如果你可以破解你自己/那里有另一个会话提供者库直接写入数据库.
编辑2014年5月21日:
我只是想出了hazelcast WM是一个很棒的库来进行点对点会话复制.您需要做的就是在类路径中包含hazelcast jar,在web.xml上设置hazelcast-wm作为过滤器并配置hazelcast.它将自动复制跨群集的会话对象.
归档时间: |
|
查看次数: |
10337 次 |
最近记录: |