1. final 키워드를 붙이지 않아서 생성자가 생성되지 않은 문제
@RequiredArgsConstructor // final이 붙거나 @NotNull 이 붙은 필드의 생성자를 자동 생성해주는 롬복 어노테이션
private final PasswordEncoder passwordEncoder; // final 키워드를 붙여줘야 생성자를 자동생성
2. security의 기능을 숙지하지 않아 생긴 문제
- Login GetMapping 메서드 미 구현
- 시큐리티 login 로직 실행을 위해 필요한 것들
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//EnableWebSecurity -> 직접 스프링 시큐리티 설정을 하겠다는 어노테이션
// websecurity 설정을 좀 손쉽게 하려면 WebSecurityConfigurerAdapter를 상속
// 당장 사용한 이유 -> custom loginform 을 사용하기 위해
@Override
protected void configure(HttpSecurity http) throws Exception {
// 원하는 특정 요청들을 authorize 체크를 하지 않도록 걸러낼 수 있음
http.authorizeRequests()
.mvcMatchers("/", "/login", "/sign-up", "/check-email-token",
"/email-login", "/login-by-email").permitAll() // mvcMatchers로 해당 링크는 모두 허용한다.
.mvcMatchers(HttpMethod.GET, "/profile/*").permitAll() // profile 링크는 GET만 허용한다.
.anyRequest().authenticated(); // 그 외 링크는 모두 인증해야 쓸 수 있다.
http.formLogin()
.loginPage("/login").permitAll(); // 로그인 페이지 URL에 인증과 무관하게 permitAll
http.logout()
.logoutSuccessUrl("/");
http.rememberMe()
.userDetailsService(accountService)
.tokenRepository(tokenRepository());
//rememberMe() session저장
}
// http.formLogin().loginPage("/login").permitAll();
// -> 로그인(post) request를 받아 로그인 로직을 실행 이를 위해서는 UserDetailsService 를 구현해야함
public class AccountService implements UserDetailsService {
@Transactional(readOnly = true)
// 데이터 변경 X -> check -> 읽기 전용 트랜잭션 사용시 writeLock
@Override
public UserDetails loadUserByUsername(String emailOrNickname) throws UsernameNotFoundException {
Account account = accountRepository.findByEmail(emailOrNickname);
if (account == null) {
account = accountRepository.findByNickname(emailOrNickname);
}
if (account == null) {
throw new UsernameNotFoundException(emailOrNickname);
}
return new UserAccount(account);// principal에 해당하는 객체를 넘김
}
security의 login 로직을 위해서 구현해야 한다.
}
현재 진행상황은 회원가입과 로그인은 구현했으나 로그인 후 이메일 인증에서 에러가 났다.
TODO
1. 이메일 인증
2. 서드파티 로그인
'프로젝트 정리 > 경조사 가계부 프로젝트' 카테고리의 다른 글
8. 회원가입 이메일 토큰 누락 에러 해결 (0) | 2022.05.25 |
---|---|
7. SpringSecurity persistent_login 에러 (0) | 2022.05.23 |
#4 회원가입 기능 구현하기 (구상) (0) | 2022.01.28 |
#3 경조사 가계부 프로젝트 시작 (0) | 2022.01.28 |
#2 경조사 가계부 프로젝트 구상 (0) | 2022.01.24 |