nginx负载均衡,session共享问题

业务逻辑:用户登录后,会在session中存入一个userid,拦截器中检查session中有无userid,没有的就跳转到登录,有就进入下一步处理。

项目部署:分别部署到两个tomcat中,用nginx做负载均衡。

问题:登录验证通过后,应该是跳转到正常页面,但是拦截器检查session中没有userid,又跳转到登录页面了,请教波总怎么处理?

评论区

JFinal

2016-11-23 16:41

最简单的办法是将 session 存入数据库,缓存中取的时候,如果没有的话,就去数据库取,如果还没取到的话才跳转去登录,jfinal.com官网就是这么做的,中间的 cache 只作为一个优化手段

其它一些办法无非就是让 session 数据进行共享,或者同步,例如使用一个中心的 redis 服务等等

charlox

2016-11-23 17:26

@JFinal感谢波总一如既往的悉心解答。暂时用redis服务,期待jfinal2.3,支持jfinal

charlox

2016-11-23 17:32

@JFinal 顺便再问一下,如题中的负载均衡部署,登录验证码的盐值共享(2.3中是加了盐值的),是否也可以采用相同的方法共享盐值,再通过setSalt(String salt)方法设置。

JFinal

2016-11-23 22:53

@charlox jfinal 2.3 最终版还会改进这里,采用在服务端缓存 token 值的方式来做,全性更好,集群方式部署,对于一般的系统建议采用共享数据库,再对每个集群结点用 ehcache 做缓存的方式来做,这样做起来非常方便

charlox

2016-11-24 09:24

@JFinal 感谢波总解答建议,期待2.3

热门反馈

扫码入社