我现在正在开发简单的 Spring Boot Web 应用程序.. spring(过滤器)中是否有东西可以检查每个请求( header ).. 我想检查一下是否有cookie.. 如果有cookie-什么也没有发生.. 但如果没有,它会创建 cookie... 我是否必须手动执行此操作,所以我将其放入每个函数中? 或者我可以做一些类似全局函数的事情,它会与其他每个请求一起执行吗?
感谢您的帮助。
最佳答案
是的,你必须使用过滤器 你可以尝试做这样的事情
public class MyCookieFilter extends GenericFilterBean {
public static final String MY_COOKIE_NAME = "your-cookie-name";
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
checkCookie(httpServletRequest, httpServletResponse);
filterChain.doFilter(servletRequest, servletResponse);
}
private void checkCookie(HttpServletRequest request, HttpServletResponse servletResponse) {
boolean cookieExists = Arrays.stream(request.getCookies()).anyMatch(cookie -> cookie.getName().equalsIgnoreCase(MY_COOKIE_NAME));
if (!cookieExists) {
String cookieValue = "your-cookie-value";
Cookie newCookie = new Cookie(MY_COOKIE_NAME, cookieValue);
servletResponse.addCookie(newCookie);
}
}
}
然后将其添加到您的安全配置中
@Override
public void configure(HttpSecurity http) throws Exception {
http
...
.addFilter(new MyCookieFilter())
...
}
关于spring - 在每个请求中设置 cookie - SPRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63166979/