No se puede resolver símbolo de "seguridad" en la aplicación de inicio de la primavera

salida:

Estoy tratando de aprender Java primavera y haciendo exactamente como aquí: https://spring.io/guides/gs/securing-web/

Pero mi IDE dice "no puede resolver símbolo de 'seguridad'", mientras que la importación de configuración. Estoy usando la misma versión de la primavera y tener el mismo código. No sé lo que está mal.

package com.github.SpringSite.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    }

    @Bean
    @Override
    public UserDetailsService userDetailsService() {
        UserDetails user =
                User.withDefaultPasswordEncoder()
                        .username("user")
                        .password("password")
                        .roles("USER")
                        .build();

        return new InMemoryUserDetailsManager(user);
    }
}

mi pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.github</groupId>
    <artifactId>SpringSite</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringSite</name>
    <description>Simple website using Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

También estaría agradecido por la recomendación de una guía buena para aprender primavera.

Dmitri Popov:

Se ve que su actual spring-securitydependencia se limita a testsu alcance.

Si seguimos el tutorial, se establece que hay que añadir la siguiente dependencia para WebSecurityConfig:

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

Tenga en cuenta que el alcance no se establece aquí, es decir, será el ámbito predeterminado, que es compile.

Puede que tenga que volver a importar manualmente el proyecto Maven después de cambiar dependencias: proyecto Maven manualmente volver a importar en IntelliJ IDEA

Después de la re-importación, las dependencias en pom.xmlque no se deben mostrar como rojo.

actualización ligera

Para ser 146% seguro, aquí está mi pom.xml que las obras:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-securing-web</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>

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

    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Actualización 2 - solución de un problema real actual

En realidad el problema (así como en el propio texto de la pregunta) es sólo una falta importde HttpSecurityclase en WebSecurityConfig.

por lo que añadir

import org.springframework.security.config.annotation.web.builders.HttpSecurity;

hará que la compilación de código y SpringSiteApplicationcomenzar.

Actualización 3 - cuál era el problema real después de que se determinó a través de TeamViewer.

Las dependencias de la primavera no se han descargado, ya que el equipo no tuvo acceso a repo central de Maven ( https://repo.maven.apache.org/maven2 ). Después de desactivar el firewall de Windows, las conexiones comenzaron a trabajar.

IDEA fue demasiado lento en la actualización de los índices de pase, pero una línea de comandos mvn installayudado a descargar finalmente las bibliotecas. Después, la idea comenzó a mostrar las clases importados.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=228126&siteId=1
Recomendado
Clasificación