enter image description here
项目结构附为图片
这是WebSecurity类
package com.demo.springsecurity.config;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@EnableWebSecurity
public class WebSecurity {
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder(11);
}
}
这是服务类
package com.demo.springsecurity.service;
import com.demo.springsecurity.entity.User;
import com.demo.springsecurity.entity.VerificationToken;
import com.demo.springsecurity.model.UserModel;
import com.demo.springsecurity.repository.UserRepository;
import com.demo.springsecurity.repository.VerificationTokenRepository;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@Service
@Log4j2
public class UserServiceImpl implements UserService{
@Autowired
private UserRepository userRepository;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private VerificationTokenRepository verificationTokenRepository;
@Override
public User registerUser(UserModel userModel) {
User user = User.builder()
.firstName(userModel.getFirstName())
.lastName(userModel.getLastName())
.role("User")
.build();
user.setPassword(passwordEncoder.encode(userModel.getPassword()));
user = userRepository.save(user);
log.info("User saved in db");
return user;
}
@Override
public void saveVerificationTokenForUser(String token, User user) {
VerificationToken verificationToken = new VerificationToken(user,token);
verificationTokenRepository.save(verificationToken);
}
}
如果你想看到任何其他类文件代码来帮助我解决这个问题,请告诉我。
错误
com.demo.springsecurity.service中的字段passwordEncoder。UserServiceImpl需要类型为“org.springframework.security.crypto-password”的bean。找不到PasswordEncoder“。
注入点具有以下注释:
-@org.springframework.beans.factory.annotation。自动连线(必需=true)
行动
考虑定义一个类型为“org.springframework.security.crypto-password”的bean。配置中的PasswordEncoder。
--我已经将该方法定义为@Bean,但仍然没有自动连接,请告诉我我在这段代码中做错了什么。谢谢你。
我已经将该方法注释为@Bean,这样我就可以在服务类中自动连接它,但仍然无法工作。