4

I'm trying to learn Java Spring and doing exactly like here: https://spring.io/guides/gs/securing-web/

But my IDE says "cannot resolve 'security' symbol" while importing config. I'm using the same version of spring and have the same code. I don't know what is wrong.

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); } } 

My 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> 

I would also be grateful for the recommendation of a good guide to learn spring.

1 Answer 1

11

It looks that your current spring-security dependency is only for test scope.

If we follow the tutorial, it states that you have to add the following dependency for WebSecurityConfig:

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

Note that the scope is not set here, i.e. it will be the default scope, which is compile.

You may need to manually re-import the maven project after changing dependencies: Manually re-import maven project in IntelliJ IDEA

After re-importing, the dependencies in pom.xml shouldn't be displayed as red.

Slight update

To be 146% sure, here is my pom.xml that works:

<?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> 

Update 2 - fix of actual current problem

Actually the problem (as well as in the question text itself) is just a missing import of HttpSecurity class in WebSecurityConfig.

So adding

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

will make the code compile and SpringSiteApplication start.

Update 3 - what was the REAL problem after we investigated it via TeamViewer.

The Spring dependencies haven't been downloaded, since the computer had no access to central maven repo (https://repo.maven.apache.org/maven2). After disabling Windows firewall, the connections started to work.

IDEA was too slow when updating repo indexes, but a command-line mvn install helped to finally download the libraries. After it, the IDEA started to show the imported classes as well.

Sign up to request clarification or add additional context in comments.

10 Comments

I added this dependency and clicked "Import changes". Still the same issue "Error:(5, 72) java: package org.springframework.security.config.annotation.web.configuration does not exist". It can not resolve "security" symbol.
@Eliro could you please upload your project to github to make it possible to look at it?
@Eliro because I've done it exactly by tutorial, re-imported maven, and WebSecurityConfig compiles now. I've updated the answer with the updated pom.xml.
@Eliro Thank you. I've cloned it. Actually in your file import for HttpSecurity is missing in WebSecurityConfig. Add this to imports in WebSecurityConfig: import org.springframework.security.config.annotation.web.builders.HttpSecurity;
In my case, dependency was downloaded in local repo but, IDEA was too slow when updating repo indexes. I just restarted the Intellij & it worked for me. Thanks
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.