-
회원가입 시 비밀번호 암호화스프링/스프링 시큐리티 2024. 1. 8. 18:07
회원가입을 할 때 비밀번호 암호화를 하지 않으면 그냥 데이터베이스에 데이터를 저장해놨다가 맞춰보는 것밖에 안된다.
db가 털리면 회원들의 정보가 다 털리는 것이다.
SecurityConfig.class
@Configuration @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록이 된다. public class SecurityConfig { // 해당 메서드의 리턴되는 오브젝트를 IoC로 등록 @Bean public BCryptPasswordEncoder encodePWD() { return new BCryptPasswordEncoder(); } }
SecurityConfig에 BCryptPasswordEncodeer를 추가해준다.
이 메서드는 비밀번호를 자동으로 암호화해서 db에 저장해준다.
IndexController.class
@Controller public class IndexController { @Autowired private UserRepository userRepository; @Autowired private BCryptPasswordEncoder bCryptPasswordEncoder; @PostMapping("/join") public String joinProc(User user) { user.setRoles("USER"); userRepository.save(user); String rawPassword = user.getPassword(); String encPassword = bCryptPasswordEncoder.encode(rawPassword); user.setPassword(encPassword); userRepository.save(user); return "redirect:/loginForm"; } }
위에서 만든 빈을 주입받아주고, 입력받아온 비밀번호를 bCryptPasswordEncoder.encode를 통해서 암호화 해주고, 암호화된 비밀번호로 user를 바꿔준다.
(시큐리티를 공부하는 것이라 그냥 간단하게 set을 활용함.)
mysql workbench에서 저장된 것을 보면 암호화가 되어있다.
로그인은 암호화 하기 전 비밀번호를 입력하면 된다.
예를 들어서, username이 user고 passwor가 12341234로 회원가입을 했다고 치자, password가 위와 같이 암호화가 되어도, 로그인을 할 때에는 비밀번호를 12341234로 입력하면 된다.
그 이유는 내부에서 자동으로 검증해주기 때문이다.
UsernameAndPasswordToken을 가져와서 알아서 복구화해서 로그인을 진행하기 때문에 안전한 회원가입, 로그인이 진행된다.
'스프링 > 스프링 시큐리티' 카테고리의 다른 글
OAuth - 구글 로그인(Authentication 객체가 가지는 2가지 타입) (0) 2024.01.09 OAuth - 구글 로그인(구글 api를 통해 회원 프로필 받아오기) (0) 2024.01.09 시큐리티 권한처리 (0) 2024.01.08 Security Session (0) 2024.01.08 스프링 필터 - 권한 있는 사람만 접근 (0) 2024.01.08