-1
votes

Erreur dans Spring Security avec le code d'état 404

Je suis confronté à des problèmes avec le point de terminaison de sécurité / connexion de printemps.J'aimerais avoir une API d'authentification mais

lorsque je fais une demande de message au

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class ApplicationWebSecurityConfig extends WebSecurityConfigurerAdapter{
    
    
    @Autowired
    private ApplicationUserService applicationUserService;


    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .antMatchers("/login").permitAll()
                .anyRequest().authenticated();

    }

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


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

}

c'est la réponse

{
    "timestamp":"2020-11-12T17:00:32.691+00:00",
    "status":404,
    "error":"Not Found",
    "message":"",
    "path":"/login"
}

Ceci est ma classe de configuration

localhost:8080/login


2 commentaires

fonctionnent sur Tomcat autonome ou intégré?


il est intégré!


4 Réponses :


-1
votes

J'ai eu un problème similaire avant, et je l'ai résolu en ajoutant un "/" à la fin de l'URL.

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .antMatchers("/login/").permitAll()
                .anyRequest().authenticated();

    }


3 commentaires

alors le problème doit provenir du contrôleur


s'il provenait de la sécurité du ressort, il renverrait un HTTP 401 ou 403


Mais je pense que le point de terminaison de connexion est autoconfiguré par Spring Security, je n'ai pas de contrôleur



-1
votes

Veuillez vérifier votre contrôleur que vous entrez le chemin correct. Il n'y a aucun problème avec la configuration de sécurité.


1 commentaires

mais Spring Security utilise ce point de terminaison par défaut pour la connexion, je n'ai aucun contrôleur dans ce projet



0
votes

Ajoutez formlogin () à votre configuration:

        http
            .csrf().disable()
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeRequests()
            .anyRequest().authenticated()
            .and().formLogin();

Vous n'aurez pas besoin de .antMatchers ("/ login"). PermitAll ().

Votre erreur semble ne pas avoir de point de terminaison de connexion. formLogin () s'occupe de sa génération.


0 commentaires

1
votes

J'ai découvert pourquoi !!

J'utilisais cette dépendance

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

et le bon pour mon but son

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
</dependency>


0 commentaires