POM 추가
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
Security 추가
@Configuration //다른 bean들 보다 우선순위를 앞으로 @EnableWebSecurity //security 어노테이션 public class WebSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests().antMatchers("/users/**").permitAll(); http.headers().frameOptions().disable(); //h2 console error 해결을 위해 } }
BCryptPasswordEncoder 사용
@Service @RequiredArgsConstructor public class UserServiceImpl implements UserService{ private final UserRepository userRepository; private final BCryptPasswordEncoder bCryptPasswordEncoder; @Override public ResponseUser createUser(UserDto userDto) { userDto.setUserId(UUID.randomUUID().toString()); ModelMapper mapper = new ModelMapper(); mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); UserEntity userEntity = mapper.map(userDto, UserEntity.class); userEntity.setEncryptedPwd(bCryptPasswordEncoder.encode(userDto.getPwd())); UserEntity save = userRepository.save(userEntity); ResponseUser responseUser = mapper.map(save, ResponseUser.class); return responseUser; } }
bCryptPasswordEncoder bean 등록은 어찌해야할까?
가장 먼저 호출되는 스프링 어플리케이션 기동 클래스에다가 해당 bean을 등록해두면 된다
2.x버전 스프링프레임워크방식때는 xml가지고 등록
3.x버전 엘리먼트 beans로 등록
4.x버전 어노테이션 방식으로
스프링부트에 와서는 초기 기동할 수 있는 클래스 제어할 수 있게 되었는데 그게 바로 지금 프로젝트에는 UserServiceApplication이다
또는 하나의 java 파일로 만들어서 등록
bean 등록
@SpringBootApplication @EnableDiscoveryClient public class UserServiceApplication { public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } @Bean public BCryptPasswordEncoder bCryptPasswordEncoder(){ return new BCryptPasswordEncoder(); } }