Spring Boot avec authentification - page de connexion introuvable (404)


Daniel Pinkpank

J'ai un problème avec mon application Spring car j'ai essayé d'inclure des éléments de sécurité.

Après avoir créé une petite application fonctionnelle comprenant angularJS, j'ai suivi ce tutoriel sur la sécurité du printemps, mais je ne peux pas le démarrer. Lorsque j'essaye d'accéder à n'importe quelle partie de l'application, le module de sécurité veut rediriger vers http: // localhost: 8080 / login ... mais ne le trouve pas.

Une erreur inattendue s'est produite (type = introuvable, état = 404). Aucun message disponible

Peut-être que je manque juste une petite chose mais je n'arrive pas à comprendre ce que c'est ^^

Voici mon code ...

structure des dossiers:

src/main/java
 +-Application.java
 +-SecurityConfiguration.java

src/main/resources
 +-static
  +-index.html
 +-templates
  +-login.html

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.0.BUILD-SNAPSHOT</version>
</parent>

<!-- Additional lines to be added here... -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.3-1100-jdbc4</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
    </dependency>

</dependencies>

Application.java:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login").setViewName("login");
    }
}

SecurityConfiguration.java:

    import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests().anyRequest().authenticated();
        http
                .formLogin().failureUrl("/login?error")
                .defaultSuccessUrl("/")
                .loginPage("/login")
                .permitAll()
                .and()
                .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login")
                .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
    }
}

login.html:

    <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Spring Security Example</title>
</head>
<body>
    <div th:if="${param.error}">Invalid username and password.</div>
    <div th:if="${param.logout}">You have been logged out.</div>
    <form th:action="@{/login}" method="post">
        <div>
            <label> User Name : <input type="text" name="username" />
            </label>
        </div>
        <div>
            <label> Password: <input type="password" name="password" />
            </label>
        </div>
        <div>
            <input type="submit" value="Sign In" />
        </div>
    </form>
</body>
</html>
Daniel Pinkpank

J'ai suivi mon propre indice dans le commentaire ci-dessus et j'ai compris que j'avais oublié extends WebMvcConfigurerAdaptermonApplication.class

Cela a résolu le problème!

Articles connexes


Page introuvable 404 en cliquant sur le bouton de connexion

David Hollenbeck OK donc j'ai l'enregistrement qui fonctionne bien. J'ai une erreur quelque part qui est l'erreur de ce qui suit Request Method: POST Request URL: http://localhost:8000/users/%7Burl%20'users:login'%20%25%7D Using the URLconf defined in login

Structure de projet Spring Boot avec authentification

Denis Stephanov : J'apprends Spring Boot et ses modules, mais je veux éviter d'apprendre de mauvaises pratiques. Alors pouvez-vous me dire quelle structure de projet utilise habituellement pour cela? J'utilise cette structure: com +- example +- myproject

Authentification Échec de mongoDB avec Spring Boot

StuartDTO J'essaie de créer un serveur où ma page Web / application peut passer des appels, à partir de maintenant je commence par Login donc, j'ai créé le serveur en fonction de mes besoins, le problème est application.propertiesqu'il me manque quelque chose,