当前位置: 首页 > 知识库问答 >
问题:

Spring Boot:无法从其他来源访问安全资源-CORS-Spring Security-Spring data rest

澹台岳
2023-03-14

我无法访问其他来源安全资源。搜索了几天的解决方案,但没有找到,所以我在这里发布问题。

public interface GreetingRepository extends JpaRepository<Greeting, Long>, JpaSpecificationExecutor<Greeting> {}
@Configuration 
public class GlobalRepositoryRestConfigurer extends RepositoryRestConfigurerAdapter {

@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
    config.getCorsRegistry()
            .addMapping("/**")
            .allowedOrigins("*")
            .allowedHeaders("*")
            .allowedMethods("*");
}
}

而且起作用了。第二个应用程序将带有方法GET的HTTP请求发送到HTTP://localhost:8080/api/greetings,并得到带有Json数据的响应,报头为access-control-allow-origin:*。一切都很好.

但是.

然后我想在第一个应用程序中保护我的资源。在那里,我包含了spring-boot-starter-security依赖项,并在WebSecurityConfigurerAdapter中进行了配置:

@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserDetailsService myUserDetailsService;

@Autowired
PasswordEncoder myPasswordEncoder;

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin().permitAll()
            .and()
            .httpBasic()
            .and()
            .csrf().disable();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(myUserDetailsService).passwordEncoder(myPasswordEncoder);
}

@Bean
public UserDetailsService createBeanUserDetailService() {
    return new MyUserDetailsService();
}

@Bean
public PasswordEncoder createBeanPasswordEncoder() {
    return new BCryptPasswordEncoder();
}
}

共有1个答案

司立果
2023-03-14

启用Spring security时,安全筛选器优先于corsfilter。要使Spring Security知道您的CORS配置,请在HttpSecurity安装程序中调用CORS()方法。

@Override
protected void configure(HttpSecurity http) throws Exception {
  http
        .cors()
        .and()
        .authorizeRequests()
        .anyRequest().authenticated()
        .and()
        .formLogin().permitAll()
        .and()
        .httpBasic()
        .and()
        .csrf().disable();
}

这将使corsfilter优先于其他Spring Security过滤器corsfilter识别CORS预飞行请求(HTTP选项调用),并允许它在没有任何安全性的情况下通过。

 类似资料:
  • TensorFlow 白皮书 在这份白皮书里,你可以找到关于 TensorFlow 编程模型的更多详情和 TensorFlow 的实现原理。 TensorFlow: Large-scale machine learning on heterogeneous systems 引用 如果你在你的研究中使用了 TensorFlow,并且希望在引用中注记 TensorFlow,我们建议你引用上面这篇论文。

  • 问题内容: 我正在尝试使用jdbcTemplate连接到Java中的数据库,并且开始出现以下错误。我已经使用Google搜索了很长时间,发现的所有解决方案都无法解决我的问题。我尝试了几种不同的数据库(SQLServer和MySQL),但没有一个起作用。 这是我的属性文件: webapp / WEB-INF / applicationContext-database.xml: DAO类: 问题答案:

  • 我正在工作的一个项目与SpringbootReactJS和MongoDB。我已经实现了整个代码,但它没有从数据库导入数据。它显示了以下错误。 访问位于“”的XMLHttpRequesthttp://localhost:8080/api/auth/file“起源”http://localhost:8081'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origi

  • 了解更多有关于Giojs 基本元素 阅读markdown格式的API文档 APIs 如果你有兴趣参与Giojs开发,不妨先从 开发指南 中熟悉一下Giojs的开发规范

  • 其他资源:可以定位为“不需要做任务处理,只要直接打包输出就可以的资源”,比如icon图标资源、字体资源等 打包其他资源只需要使用到 file-loader 一、打包其他资源的核心配置 // webpack.config.js webpack的配置文件 // 路径: ./webpack.config.js ………… // loader的配置 module: { rul

  • 问题内容: 我试图使CORS请求正常工作。使用以下JS代码,我得到此错误: 这是JS代码: 当我使用chrome的devtools查看网络时,我发现确实没有标题。但是,当我手动加载该网站时,它就存在了! 我使用以下代码设置标题: 希望能有所帮助! 问题答案: 它说这意味着您的服务器应用程序需要调整以接受跨源请求。由于安全原因,默认情况下跨源请求不起作用。您需要启用它们。 对于django,有一个维