shiro的共享session整合到jfinal中给前端访问

jfinal在解决session给前端访问的问题解决的方案是提供一个sessionInView的拦截器。

我这边是用shiro去代理的tomcat的session,做了一个redis的共享session。

所以不能直接的去controller.getSession的方式去获取httpSession,需要用shiro的subject.getSession获取shiro的session,那么jfinal的sessionInView的拦截器就不能用了

那我这样的话是不是得重新写一个shiro版本的jfinalShiroSessionInView拦截器,其实写起来也简单,把之前拦截器中controller.getSession换成subject.getSession就好了,主要都是重复代码感觉这样写不是最好的解决方案,不知道有什么更好的解决方案吗,对于shiro session提供给前端使用

评论区

JFinal

2017-09-12 11:46

redis 共享会话以后,就不要再用 session 这种东东了,然后所有用到会话的地方全走 redis,包括拦截器

yjjdick1990

2017-09-12 15:33

@JFinal 我昨天试了下用apache+tomcat负载均衡的方式测试了shiro集成的session发现了一个现象,我们用的session是httpsession,而shiro的session是shiro封装过的session。
奇怪的是如果我往httpsession里直接setattr,居然能在shiro的session中也能获取到httpsession的值,反之亦然,这个让我大吃一惊,我本来想以为两个类都不一样肯定不能互通后来实验看了现象发现很神奇
我今天早上问了下提供给我session共享集成的作者,他给我看了一篇文章我才知道https://my.oschina.net/thinwonton/blog/979118
所以重写一遍SessionInView的拦截器也就没有必要啦,还是感谢波总的细心回答

JFinal

2017-09-13 23:55

@yjjdick1990 搞清楚数据存放在哪里,从哪取过来,这才是本质问题,具体怎么操作都是细枝末节

热门反馈

扫码入社