это класс 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);
}
}
Ошибка:< /strong>
Полю пароляEncoder в com.demo.springsecurity.service.UserServiceImpl требовался bean-компонент типа «org.springframework.security.crypto.password.PasswordEncoder», который не удалось найти.
Точка внедрения имеет следующие аннотации:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Действие:
Рассмотрите возможность определения bean-компонента типа «org.springframework.security.crypto.password.PasswordEncoder» в вашей конфигурации.
- я определил этот метод как @Bean, но все еще не подключен автоматически. Скажите, пожалуйста, что не так я делаю в этом коде. Спасибо.
Я пометил этот метод как @Bean, чтобы можно было автоматически подключить его к классу обслуживания, но он все равно не работает.
Подробнее здесь: https://stackoverflow.com/questions/786 ... coder-that