@JFinal 你好,想跟你请教个问题:
呵呵,其实这个问题也不是jfinal相关的啦,呵呵,就是以最佳的用户体验为前提,ajax操作如果session超时后,用户重新登录成功后应该进入上次的ajax操作所在的页面而不是简单粗暴的进入网站首页
我目前想到2个方案:
方案1: 永不超时
在用redis做session后,其实就是在redis里面存一条没有timeout记录,没啥资源消耗,除非用户在进行ajax操作前,手动清除了浏览器缓存,否则这个session超时问题永远也不会出现
但是如果不用redis存session呢,那就是占用tomcat的jvm的内存了,也不好做集群,所以永不超时不适合这个场景
方案2:有超时时间
ajax操作遇到session超时后,用户重新登录后,跳转到该操作的所在页面,也就是header中的referer,因为你得先进入一个页面才能点击页面上的ajax链接,这里存在的问题就是在过滤器中获取header的referer是可以获取到的,但是如果之前这个页面带参数就没办法了,因为referer中不会有参数,那么在登录成功后就跳转不回去了,
例如:
ajax操作所在的页面为:/ask?type=law ,当执行该页面上的ajax操作后,过滤器中获取到的referer其实是http://localhost:8080/myproject/ask,后面的参数没法获取,所以登录成功后就跳转不回去了。
但是如果jfinal支持真正的restful,那么这个问题完全可以解决,比如ajax操作所在的页面为/ask/law,那么调用ajax操作在过滤器中获取到的referer就是/ask/law
不知道有没有一个好的方法来解决这个问题