강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của mindecco
mindecco

câu hỏi đã được viết

Ứng dụng kiến trúc microservice (MSA) phát triển với Spring Cloud

Tổng quan về JWT(JSON Web Token)

UserDto 의 pwd 값 관련

Viết

·

595

·

Đã chỉnh sửa

5

안녕하세요. 좋은강의 감사합니다.

다름이 아니라 강의에서 설명하실때는

getUserDetailsByEmail 메소드에서 UserEntity 를 UserDto로 맵핑할때

클라이언트가 입력한 password를 Spring Security 가 UserDto의 pwd 파라미터에 암호화하여 넣어준다는 식으로 말씀하신거 같습니다.

@Override
public UserDto getUserDetailsByEmail(String userName) {
    UserEntity userEntity = userRepository.findByEmail(userName);
    if(userEntity == null)
        throw new UsernameNotFoundException(userName);
    UserDto userDto = new ModelMapper().map(userEntity,UserDto.class);

    return userDto; 

그게 아니라 단지, ModelMapper 에 STRICT 설정을 해주지 않아서 UserDto의 pwd와 encrytedpwd 값이 모두 UserEntity의 password 값으로 들어간게 아닌가 해서 질문드립니다.

 

JPAarchitecturespring-cloudspring-bootKafkamsa

Câu trả lời 2

2

Dowon Lee님의 프로필 이미지
Dowon Lee
Người chia sẻ kiến thức

안녕하세요, 이도원입니다.

말씀하신대로 ModelMapper에 아래와 같이 MachingStrategy를 지정하지 않으면, UserENtity의 encryptedPwd 값이 UserDto의 pwd와 encryptedPwd에 저장될 수 있습니다. 따라서, 아래와 같이 MachingStrategies.STRICT를 지정하시는 게 좋을 것 같습니다. 관련 코드는 github에 반영되어 있으니 참고하시기 바랍니다.

mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT)

추가로, getUserDetailsByEmail 메소드에서는 인증이 완료된 사용자에 대해 JWT를 발급하기 위한 용도로 사용되고 있습니다.

감사합니다.

 

1

답변 감사합니다. ㅠㅠ 강의내용을 따라 하고 있는데.. 오늘 pwd 때문에 여러 번 고생하네요. 값이 null 이어야 하는데.. 강의내용엔 아래 코드에 의해서 암호화 된다고 해서 엄청 헤맸습니다.

 

authenticationManagerBuilder.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder);
Dowon Lee님의 프로필 이미지
Dowon Lee
Người chia sẻ kiến thức

안녕하세요, 이도원입니다.

말씀하신 내용처럼 입력 된 password가 user-service에 처리될 때는 pwd 변수에 의해서 처리되는데, 해당 암호가 입력 되었을 때, spring-security의 passwordEncoder에 의해 암호화 된다는 의미로 설명 드렸습니다. 추가 질문사항 및 다른 이견 있으시면 글 남겨 주시기 바랍니다.

감사합니다.

Hình ảnh hồ sơ của mindecco
mindecco

câu hỏi đã được viết

Đặt câu hỏi