Spring Security Anotation @EnableWebSecurity在Spring MVC项目中不起作用。

问题描述 投票:0回答:1

我必须启用 X-Frame-Options: SAMEORIGIN 在我的Spring MVC项目中,将这个参数返回到http响应头。项目部署在Apache Tomcat 9上。

以下是我的网络安全配置

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

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

我是这样初始化dispatcher 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[]{"/"};
    }
}

在春季安全文档中(https:/docs.spring.iospring-securitysitedocs5.3.1.RELEASEreferencehtml5#headers。)其中提到

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

但是,我在Response Header中看不到任何安全头,似乎我的项目中没有启用Spring Security。

enter image description here

如果我在@Controller类方法中手动添加头选项,它就会工作。

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

enter image description here

请检查,我做错了什么。如何修复并正确启用网络安全?

java spring web spring-security x-frame-options
1个回答
0
投票

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

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {

}
© www.soinside.com 2019 - 2024. All rights reserved.