JFinal Interceptor
@JFinal 你好,想跟你请教个问题:有一个登录控制器,下面是登录成功后的处理代码,登录成功后在js里用
location.href = "${base}/competitorCenter";跳转到个人中心控制器,个人中心控制有拦截,现在的问题是我登录控制器的sessionId和我个人中心拦截器里获取到sessionId不一样导致获取到的用户id值始终为null,就不能跳转到个人中心页面
Integer sid = competitor.getInt("id"); getSession().setAttribute(Competitor.LOGIN_COMPETITOR_ID_SESSION_NAME, sid.toString()); System.out.println(getSession().getId()); // 5ba0350e-c9cb-439f-b193-1a53a3f3f448 ajaxJsonSuccessMessage("登录成功");
下面是个人中心控制器
@Before(CompetitorInterceptor.class) public class CompetitorCenterController extends Controller{ public void index(){ setAttr("base", getRequest().getContextPath()); render("/competitor/competitor_center.html"); } }
下面是拦截器,打印出来的sessionId和登录时的不一样, 请问下这是什么原因呢
public class CompetitorInterceptor implements Interceptor { @Override public void intercept(Invocation ai) { Controller c = ai.getController(); System.out.println(c.getSession().getId()); //95beaa21-aafd-4eda-8fdc-189c1a0cc754 String loginCompetitorId = (String)c.getSession().getAttribute(Competitor.LOGIN_COMPETITOR_ID_SESSION_NAME); } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
应该是入坑了,通常 sessionId 乱串都是入了这个坑,按照这篇博文的方式部署,注意 context path 设置为 ""
此法可以跳出坑:https://my.oschina.net/jfinal/blog/353062
补充一句,这个问题与 jfinal 完全无关,jfinal 对 session 的所有操作仅仅只是将操作转给了 HttpServletRequest.getSession() 获取的 HttpSession 对象,出错的可能性无限接近于 0