JFinal Interceptor

发布于 2021-12-02 00:11:20 字数 1541 浏览 850 评论 1

@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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反话 2021-12-03 18:59:33

    应该是入坑了,通常 sessionId 乱串都是入了这个坑,按照这篇博文的方式部署,注意 context path 设置为 "" 

    此法可以跳出坑:https://my.oschina.net/jfinal/blog/353062

    补充一句,这个问题与 jfinal 完全无关,jfinal 对 session 的所有操作仅仅只是将操作转给了 HttpServletRequest.getSession() 获取的 HttpSession 对象,出错的可能性无限接近于 0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文