繁体   English   中英

Spring 安全注释@EnableWebSecurity 在 Spring MVC 项目中不起作用

[英]Spring Security Anotation @EnableWebSecurity does not works in Spring MVC project

我必须在我的 spring MVC 项目中启用X-Frame-Options: SAMEORIGIN ,才能将此参数返回到 http 响应 Z099FB995346F31C749F6E40DB0F395E3。 项目部署在 Apache Tomcat 9 上。

这是我的 web 安全配置

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.headers().frameOptions().sameOrigin();
    }
}

这就是我初始化调度程序 servlet 的方式

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{AppConfig.class, WebSecurityConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

在 spring 安全文档中( https://docs.spring.io/spring-security/site/docs/5.3.1.RELEASE'sreference提到了html/5/3.1.RELEASE#header

Spring Security 提供一组默认的与安全相关的 HTTP 响应标头以提供安全默认值。

但是,我在响应 Header 中看不到任何安全 header,似乎我的项目中没有启用 spring 安全。

在此处输入图像描述

如果我将 header 选项手动添加到 @Controller class 方法中,它可以工作

@Controller
public class WController {
    @GetMapping("/hello")
    public String sayHello(HttpServletResponse response, Model model) {
        response.setHeader("X-Frame-Options", "SAMEORIGIN");
        return "htmlPageTemplate";
    }
}

在此处输入图像描述

请检查,我做错了什么。 如何正确修复和启用 web 安全性?

我错过了filter ,只是添加了新的 class 来扩展AbstractSecurityWebApplicationInitializer ,它解决了这个问题。

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM