gpt4 book ai didi

java - Spring Security 注解 @EnableWebSecurity 在 Spring MVC 项目中不起作用

转载 作者:行者123 更新时间:2023-12-01 17:32:15 25 4
gpt4 key购买 nike

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

这是我的网络安全配置

@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/reference/html5/#headers)中提到了

Spring Security provides a default set of security related HTTP response headers to provide secure defaults.

但是,我在响应头中看不到任何安全头,看来我的项目中没有启用 spring security。

enter image description here

如果我手动将 header 选项添加到 @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

请检查一下,我哪里做错了。如何正确修复和启用网络安全?

最佳答案

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

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {

}

关于java - Spring Security 注解 @EnableWebSecurity 在 Spring MVC 项目中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61096883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com