Я создал учетную запись с весенней безопасностью, я протестировал ее функциональность с помощью Postman, и мой интерфейс работает хорошо, затем я пытаюсь войти в систему, и каждый раз, когда я перенаправляюсь на вход, это похоже на проблему авторизации

из внешнего интерфейса я получаю эту ошибку:

Доступ к XMLHttpRequest по адресу 'http://192.168.43.216:8080/login' из источника 'http: // localhost: 3000' заблокирован политикой CORS: ответ на предварительный запрос не проходит проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin.

Это мой WebSecurityConfig.java

    package com.pi.MinuteBrico.security.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import com.pi.MinuteBrico.services.AppUserService;

@Configuration
//@AllArgsConstructor
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    private final AppUserService appUserService;
    private final BCryptPasswordEncoder bCryptPasswordEncoder;
    

    public WebSecurityConfig(AppUserService appUserService,
            BCryptPasswordEncoder bCryptPasswordEncoder) {
        super();
        this.appUserService = appUserService;
        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        
                .cors().and()
                .csrf().disable()
                .authorizeRequests()
                    .antMatchers("/registration/**"/*,SecurityConstraint.ROLE_ALL_AUTHENTICATED_USE*/)
                    .permitAll()
                .anyRequest()
                .authenticated().and()
                .formLogin();                 
                 
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(daoAuthenticationProvider());
    }

    @Bean
    public DaoAuthenticationProvider daoAuthenticationProvider() {
        DaoAuthenticationProvider provider =
                new DaoAuthenticationProvider();
        provider.setPasswordEncoder(bCryptPasswordEncoder);
        provider.setUserDetailsService(appUserService);
        return provider;
    }
}

** Это то, что происходит, когда я пытаюсь протестировать метод Post для входа в систему http: // localhost: 8080 / вход в почтальон **

[![enter image description here][1]][1]

enter image description here

0
Iliass Alilou 30 Мар 2021 в 00:08

1 ответ

Лучший ответ

Фильтр cors (совместное использование ресурсов между источниками) добавляется в вашу конфигурацию безопасности Spring, когда вы добавляете http.cors(). Это означает, что будет обслуживаться только запрос из того же источника. Чтобы добавить запрос с перекрестным происхождением для обслуживания, вам необходимо добавить конфигурацию для этого. Добавьте ниже bean в свой SecurityConfiguration. Дополнительные сведения см. По ссылке

@Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("https://localhost:300")); //URLs you want to allow
        configuration.setAllowedMethods(Arrays.asList("GET","POST")); //methods you want to allow
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
1
hiren 30 Мар 2021 в 05:40