【发布时间】:2021-11-05 09:51:45
【问题描述】:
当我从我的应用程序中注销时,我正在尝试删除所有 cookie。我可以为 Spring Boot Web 项目执行如下操作。
/**
* Clears all the cookies from the response
*
* @param req
* @param resp
*/
public static void deleteCookies(HttpServletRequest req, HttpServletResponse resp) {
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookieToBeDeleted : cookies) {
logger.debug("Deleting cookie: {} having value: {}", cookieToBeDeleted.getName(),
cookieToBeDeleted.getValue());
cookieToBeDeleted.setMaxAge(0);
resp.addCookie(cookieToBeDeleted);
}
}
}
但是对于 webflux 来说同样是棘手的。我们有 org.springframework.http.server.reactive.ServerHttpRequest 而不是 HttpServletRequest。我们这里有一个 multimap,而不是 cookie 数组。
private void deleteCookies(ServerHttpRequest request, ServerHttpResponse response) {
MultiValueMap<String, HttpCookie> cookies = request.getCookies();
for (Entry<String, List<HttpCookie>> cookie : cookies.entrySet()) {
log.debug(cookie.toString());
}
log.debug("Response cookies" + response.getCookies().toString());
}
spring webflux 高手可以帮我实现这里的逻辑吗?
【问题讨论】:
标签: java spring-boot cookies spring-webflux servlet-3.0