spring - 在每个请求中设置 cookie - SPRING

标签 spring spring-boot cookies spring-security

我现在正在开发简单的 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/

相关文章:

spring - JPQL 多对多 - in 子句

java - 元素 "mvc"的前缀 "mvc:resources"未绑定(bind)

java - Spring Boot Actuator 端点在 SOAP Web 服务中无法访问

cookies - Phantomjs - Cookie 未启用错误

authentication - token 认证与 Cookies

php - 在 Laravel 4 中使用 Cookie

java - 如何防止 Excel 单元格格式发生变化

java - Spring Hibernate ehcache 设置

java - Spring Security 的 Thymeleaf 授权不起作用

java - Kotlin 与 Spring-Retry 未调用 @Recover