JFinal

登录 注册

cookie取值问题

本地配置HOSTS域名,访问系统登录后设置cookie(name=Auth-Token  path=/ expires=1800),然后重定向到首页,在首页取不到Auth-Token这个Cookie,如果设置expires=-1就可以取到

18.jpg19.jpg

登录是设置Auth-Token:

String token=AuthServiceImpl.me.genAuthToken(u);
//设置用户登录Token 时效30分钟
String servername = getRequest().getServerName();
CookieUtil.addCookie(getRequest(), getResponse(), "Auth-Token", token, 1800);

CookieUtil.addCookie代码:

public static Cookie addCookie(HttpServletRequest request,
HttpServletResponse response, String name, String value,
Integer expire) {
Cookie cookie = new Cookie(name, value);
if (expire != null) {
cookie.setMaxAge(expire);
}
cookie.setDomain(request.getServerName());
String ctx = request.getContextPath();
cookie.setPath(StringUtils.isBlank(ctx) ? "/" : ctx);
response.addCookie(cookie);
return cookie;
}

ActionHandle中获取cookie代码:

String oldsid = CookieUtil.getCookieValue(request, "sid");
String oldsurl = CookieUtil.getCookieValue(request, "surl");
String token = CookieUtil.getCookieValue(request, "Auth-Token");
SessionBean bean = SessionThreadLocal.get();
if (bean == null) {
bean = new SessionBean();
}
if (StringUtils.isNotEmpty(token)) {
//CookieUtil.setCookie(response, "Auth-Token", token, "/");
CookieUtil.addCookie(request,response, "Auth-Token", token,1800);
}

sid,surl都设置超时为-1,可以取到,Auth-Token设置为1800取不到。


评论

  • 04-16 19:08
    困扰好久了,大神们帮我解答一下哈
  • 04-16 20:26
    @10000 看你上面的描述,设置为-1的时候是可能拿到,然后看你实际的代码截图看,只设置了1800毫秒折算也就1.8秒,这点时间你还没切换过去就已经失效了。
  • 04-16 20:31
    @10000 把失效时间设设置长点,如:60*60*1000 = 1分钟
  • 04-16 22:52
    这段代码与 jfinal Controller.setCookie(...) 实现方式差多多,不同点在于 setPath 与 setDomain 方法

    看你的截图貌似不是这两个方法的事,很可能是取值时出的问题,你的取值代码没有给全,无法猜测,不过看到你用了一个 ThreadLocal , 要小心这个是不是有干扰,单步调试找找原因

    此外,对于 cookie 的操作,建议直接使用 jfinal 的 setCookie 与 getCookieValue 这类方法,从来没出过问题
  • 发送