유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.
IDE : IntelliJ
언어 : Java
DB : MySQL
빌드관리 도구 : Maven
OS : iOS
참고유튜브 : 메타코딩
회원가입을 할 때 비밀번호를 1234 로 입력한다고 했을 때 DB에 1234 그대로 저장이 된다면 보안상으로 좋지 못한 방법일 것이다.
그렇기 때문에 회원가입을 할 때 입력한 비밀번호를 특정 문자열로 변경하여 DB에 저장이 된다면 비밀번호 1234로 저장되는 것보다 훨씬 안정적일 것이다.
이전글에 작성이 되어 있지만, 다시 순서대로 작성하고자 한다.
SecurityConfig.java 에 해당부분을 추가한다.
@Bean
BCryptPasswordEncoder encoder(){
return new BCryptPasswordEncoder();
}
UserService.java로 이동해서 BCryptPasswordEncoder를 autuwired 해준 후
회원가입 메서드에 유저 비밀번호를 받아서 해쉬화하는 코드를 추가한다.
@Autowired
private BCryptPasswordEncoder encoder;
@Transactional
public void 회원가입(User user) {
String rawPassword = user.getPassword();
String encPassword = encoder.encode(rawPassword); //해쉬화
user.setPassword(encPassword);
user.setRole(RoleType.USER);
userRepository.save(user);
}
rawpassword로 유저가 입력한 비밀번호를 받아서 encpassword로 비밀번호를 해쉬화 하면 된다.
해쉬화를 하게 된다면 비밀번호가 특정길이의 문자열로 고정되어서 입력이 된다.
해쉬화되어 변경된 비밀번호를 set 하여 값을 저장한다.
user.js를 확인해보면 화원가입이 성공했을 때 "/"로 이동하기 때문에
SecurityConfig.java에서 해당부분을 추가해줘야 한다.
자바스크립트와 폰트, 이미지, 폰트도 같이 추가해주자.
그 후 테스트를 할 때는 crsf 토큰을 비활성하는게 좋다고 한다. (회원가입은 시큐리티에서 진행하는것이 아니라 js를 통해서 진행하기 때문에 토큰이 생성하지 않아 시큐리티가 전부 막기 때문이다.)
비활성 해주자.
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception{
http
.authorizeHttpRequests()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.requestMatchers("/css/**", "/font/**", "/images/**", "/js/**", "/auth/**","/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/auth/loginForm").permitAll()
.and()
.csrf().disable(); //csrf 토큰 비활성화
return http.build();
그리고 서버에서 회원가입을 해보면
기존에 비밀번호가 그대로 저장이 되지 않고 해쉬화 되어 저장되는것을 확인 할 수 있다.
이때 길이제한때문에 값이 DB에 저장이 안되는 경우가 있는데 그럴 때는
이렇게 길이제한을 길게 해주면 해결할 수 있다.
'프로젝트 > Spring Boot 블로그프로젝트' 카테고리의 다른 글
[블로그프로젝트] 19-1. 시큐리티세션에 저장된 아이디값 확인해보기 (0) | 2023.06.09 |
---|---|
[블로그프로젝트] 19. 시큐리티로 로그인하기 (4) | 2023.06.09 |
[블로그프로젝트] 17. 스프링시큐리티 로그인 커스터마이징 (2) | 2023.06.07 |
[블로그프로젝트] 16 스프링시큐리티로 로그인하기(3) (0) | 2023.06.05 |
[블로그프로젝트] error. jstl 500 error 해결 (2) | 2023.05.29 |
댓글