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

Angular 2 CORSSpring启动Rest控制器,具有Spring安全性

马星阑
2023-03-14

我使用angular2作为前端和Spring启动Rest控制器。在添加Spring安全性之前,我的应用程序工作正常。添加安全性后,带参数的函数不会在Spring启动Rest控制器中调用。下面是代码

Rest Controller:
----------------
@RestController
public class JobCleanupServiceController {

    private static final Logger logger = LoggerFactory.getLogger(JobCleanupServiceController.class);
   @Autowired
   JobCleanupDAO dao;

    @CrossOrigin(origins = "http://localhost:4200")
    @RequestMapping("/jobcleanup")

    public Collection<JobCleanup> index(@RequestBody String owner) {

        logger.info("Display All Jobs"+ owner);
        return dao.findAll(owner);

    }


    @CrossOrigin(origins = "http://localhost:4200")
    @RequestMapping("/jobcleanupclosedtickets")

    public JobCleanupMetrics getJobCleanupClosedTickets()
    {
        logger.info("JobCleanupMetrics getJobCleanupClosedTickets ");
        return dao.getJobCleanupClosedTickets();
    }



    @CrossOrigin(origins = "http://localhost:4200")
    @RequestMapping("/jobcleanuplinechartdata")
    public JobCleanupChart getJobCleanupLineChartData(@RequestBody String  owner){
        return dao.getJobCleanupLineChartData(owner);
    }

WebConfig.java
-------------

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
    }
}
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors();
        http.authorizeRequests()
                    .antMatchers(
                            "/jobcleanup",
                            "/jobcleanupclosedtickets",
                            "/jobcleanuplinechartdata"
                    ).permitAll();
    }

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        final CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("*"));
        configuration.setAllowCredentials(true);
        configuration.setAllowedHeaders(Arrays.asList("*"));
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

在我加入spring security之前http://localhost:4200,所有这些都被称为“/jobcleanup”、“/jobcleanupclosedtickets”、“/JobCleanupUplineChartData”。在添加spring security only之后,会调用“/jobcleanupclosedtickets”,其他方法不会被调用。除了“/jobcleanupclosedtickets”之外,其他方法都有请求主体。

有人能帮我解决这个问题吗?

共有1个答案

茅星华
2023-03-14

更新了SecurityConfig。java如下所示。默认情况下,csrf在spring security中启用。

 @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {

    http.csrf().disable();
    http.cors();

        }

        @Bean
        public CorsConfigurationSource corsConfigurationSource() {
            final CorsConfiguration configuration = new CorsConfiguration();
            configuration.setAllowedOrigins(Arrays.asList("*"));
            configuration.setAllowedMethods(Arrays.asList("*"));
            configuration.setAllowCredentials(true);
            configuration.setAllowedHeaders(Arrays.asList("*"));
            final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            source.registerCorsConfiguration("/**", configuration);
            return source;
        }
    }
 类似资料:
  • 我正在测试家庭控制器 我使用spring security作为用户名“user”,默认情况下作为密码进行测试,但@PreAuthorize不起作用 的结果 预期结果: 实际结果: 我错过了什么吗?

  • 我的应用程序有Spring boot 1.3.2,我正在尝试将Spring MVC与Spring Security结合使用。 我有管理小组http://localhost:8080/admin和我的普通用户页面内容http://localhost:8080/ 如果你试图打开一个管理面板(http://localhost:8080/admin)你必须登录,如果你是常见的只需输入http://loca

  • 我有低于pom的。SpringBoot应用程序中的xml。在运行应用程序时,我没有遇到任何错误。但当我通过邮递员或浏览器点击URL时,控制器中的java代码不会被执行。 波姆。xml: 控制器: 项目执行截图: Spring Boot应用程序类: Spring启动存储库类: 将BasePackage添加为com后。下面是一个例外情况: 2022-03-21 09:51:35.169WARN 205

  • 我正在尝试测试以下控制器: 下面是测试类: 当我运行测试失败,并给我以下消息: 当我测试的url正常工作。

  • 我面临的挑战是,我找不到一种方法来配置安全性,使到/profilesendpoint的POST请求不受保护,而GET或PUT的请求从提供的承载令牌传递到派生的@AuthenticationPrincipal中。 我想在API中设置以下内容:POST/profile创建新用户-无安全性GET/profile/{id}按id获取用户-需要管理员权限或用户是authd POST/password/res

  • 嗨,我用spring初始化器创建了一个简单的Spring Boot应用程序。我在主应用程序类的同一文件夹中添加了一个控制器。 这是给我以下错误的网址http://localhost:8080/welcome 此应用程序没有针对/错误的显式映射,因此您将其视为回退。 Sat Dec 19 12:51:44 IST 2020出现意外错误(类型=未找到,状态=404)。 如果我使用@restContro