场景:
使用vert.x开发Web端,登录时会在cookie写入服务信息,当新建session时,需要移除cookie中原有的服务信息。
设置cookie:
public void setCookie(RoutingContext routingContext){
Cookie cookie = Cookie.cookie("X", java.net.URLEncoder.encode(boxName,"utf-8"));
cookie.setPath("/");
long age = 365 * 24 * 60 * 60;
cookie.setMaxAge(age);// 如果不设置,默认为session的有效时长
routingContext.addCookie(cookie);
}
移除cookie:
public void deleteCookie(RoutingContext routingContext){
Cookie cookie = routingContext.getCookie("X");
if (cookie != null){
cookie.setMaxAge(0L);
cookie.setPath("/");
routingContext.addCookie(boxNameCookie);
}
}
如果在设置cookie时,设置了path和domain,移除的时候同样再设置对应属性,再加上maxAge=0,实现移除cookie目的。
另外,不要使用Vert.x框架中routingContext.removeCookie方法,跟代码发现,remove时只是设置了maxAge=0,无法有效移除cookie。