form에서 데이터를 입력받고 DB에 저장하는 특별한건 없지만, password 저장시에는 BCryptPasswordEncoder 사용해서 암호화 한다음 저장하도록 했다.
Spring Security 에서 로그인을 하기위해선 인증을 해야하고 인증에 성공하면 토큰을 발급 해준다.
AuthenticationProvider
는 인증 전 Authentication객체를 받아서 인증이 완료된 객체를 반환 하는 역할을 한다.(토이프로젝트에선 입력한 로그인 정보와 DB에서 가져온 사용자의 정보를 비교해서 같으면 인증 객체를 반환시켰다.)
UsernamePasswordAuthenticationToken
는 인증 성공한 클라이언트들에게 발급하는 인증 토큰이다.
나는 AuthenticationProvider
를 구현한 UserLoginAuthenticationProvider
클래스를 만들고,
DB에서 가져온 password(암호화된)를 matches() 메서드를 사용해서 입력받은 비밀번호와 일치하는지 확인해서 일치하면 인증에 성공 했으므로UsernamePasswordAuthenticationToken
를 만들어 return 해주었다.