더북(TheBook)

코드 3-9에서 볼 수 있듯이 Reader 클래스를 JPA 엔티티로 만들려고 @Entity 애너테이션을 붙였다. 그리고 username 필드를 엔티티의 ID로 표시하려고 @Id 애너테이션을 붙였다. 이제 username 필드가 Reader를 유일하게 식별한다.

ReaderUserDetails 인터페이스의 여러 메서드를 구현한다는 것도 알 수 있다. 따라서 스프링 시큐리티에서 사용자를 표현하는 객체로 Reader를 사용할 수 있다. getAuthorities() 메서드는 항상 사용자에게 READER 권한을 부여하도록 오버라이드했다. isAccountNonExpired(), isAccountNonLocked(), isCredentialsNonExpired(), isEnabled() 메서드는 모두 true를 반환하도록 구현하여 사용자 계정을 절대 잠그거나 폐기하거나 만료하지 않도록 했다.

독서 목록 애플리케이션은 메모리를 저장소로 쓰는 내장 H2 데이터베이스를 사용하도록 했다. 로그인을 하려면 사용자를 저장하는 Reader 엔티티를 저장할 Reader 테이블을 생성하고 로그인 사용자를 생성해야 한다. 하지만 Reader 테이블은 스프링 부트 기본 설정에 따라(spring.jpa.hibernate.ddl-auto=create) 애플리케이션을 시작할 때 자동으로 테이블을 생성하도록 되어 있다. 이제 생성된 Reader 테이블에 로그인할 수 있는 사용자 정보만 추가하면 된다. resources/data.sql 파일을 생성하고 코드 3-10과 같이 SQL을 추가하자.

 

코드 3-10 사용자 정보 추가(resources/data.sql)

insert into Reader (username, password, fullname) values (craig, password, Craig Walls);

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.