【问题标题】:Spring Security Anotation @EnableWebSecurity does not works in Spring MVC projectSpring Security Annotation @EnableWebSecurity 在 Spring MVC 项目中不起作用
【发布时间】:2020-07-20 15:21:51
【问题描述】:

我必须在我的 spring MVC 项目中启用X-Frame-Options: SAMEORIGIN,才能将此参数返回到 http 响应标头。 项目部署在 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 提供了一组默认的安全相关 HTTP 响应标头以提供安全的默认值。

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

如果我在 @Controller 类方法中手动添加标题选项,它会起作用

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

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

【问题讨论】:

标签: java spring web spring-security x-frame-options


【解决方案1】:

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

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {

}

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2020-07-17
    • 2016-12-15
    • 1970-01-01
    • 2017-10-28
    • 2016-07-20
    • 2012-01-02
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多