Spring Boot Cross исходные запросы на блокировку - PullRequest
1 голос
/ 23 мая 2019

У меня есть это приложение Spring Boot с контроллером для конечной точки входа в систему.Я установил следующие веб-конфигурации:

    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(securedEnabled = true, jsr250Enabled = true, prePostEnabled = true)
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {


        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.cors().and().csrf().disable().authorizeRequests()
                    .antMatchers(HttpMethod.POST, PathConstants.USER_AUTH +"/**", PathConstants.HELIOS+"/dashboard/**").permitAll()
                    .antMatchers(HttpMethod.GET, "/"+PathConstants.PROCESS_DEFINITION+"/**").permitAll()
                    .antMatchers(HttpMethod.POST, "/"+PathConstants.PROCESS_DEFINITION+"/**").permitAll()
                    .antMatchers(HttpMethod.GET, "/"+PathConstants.PROCESS_INSTANCE+"/**").permitAll()
                    //.antMatchers(HttpMethod.POST,  PathConstants.LOGIN_ACTION).permitAll()
                    //.anyRequest().authenticated()
                    .anyRequest().permitAll()
                    .and()
                    .exceptionHandling().authenticationEntryPoint(jwtAuthEntryPoint).and()
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
            // custom jwt filter.
            http.addFilterBefore(jwtAuthFilter(), UsernamePasswordAuthenticationFilter.class);
        }

и веб-конфигурации mvc:

    @Configuration
    @EnableWebMvc
    public class WebMvcConfiguration implements WebMvcConfigurer {
    private final long MAX_AGE = 3600;



    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("*")
                .allowedMethods("HEAD", "OPTIONS", "GET", "POST", "PUT", "PATCH", "DELETE")
                .allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method",
                        "Access-Control-Request-Headers")
                .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")
                .maxAge(MAX_AGE);
    }

Я также пытался добавить .allowCredentials(true), но когда я выполняю действие входа, этовыдает ошибку перекрестного источника, и мой запрос блокируется.
Это мой класс контроллера:

    @RestController
    @RequestMapping
    @CrossOrigin
    public class AuthenticationControllerImpl implements AuthenticationController {





        @PostMapping(PathConstants.LOGIN_ACTION)
        @Override
        public SysdataUser autenticate(@Valid @RequestBody LoginRequest request) {

            Authentication auth = authManager
                    .authenticate(new UsernamePasswordAuthenticationToken(request.getUsername(), request.getPassword()));
            SecurityContextHolder.getContext().setAuthentication(auth);
            String token = jwtProvider.generateToken(auth);
            SysdataUser user = sysdataUserService.getUserProfile(request.getUsername());
            user.setToken(token);
            return user;
        }

Чего не хватает в конфигурациях?

1 Ответ

0 голосов
/ 24 мая 2019

Я не знаю, почему ваш конфиг не переопределяет поведение по умолчанию.это то, что я делаю, и это всегда работает для меня, измените @CrossOrigin в вашем классе AuthenticationControllerImpl на @CrossOrigin(origins = "*").дайте мне знать, если это сработало для вас.

...