Security 연동

조현재·2023년 1월 28일
0

MSA

목록 보기
8/17

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();
    }
}
profile
내일이 다른

0개의 댓글