Spring Security 로그인 기능

최고요·2023년 4월 21일
2

Spring Security V1 

목록 보기
3/9
post-thumbnail

로그인 기능

SecurityConfig

.loginProcessingUrl("/login") 

설정은 괄호안의 요청이 들어오면 security가 대신 login을 진행해줍니다
그래서 컨트롤러에 login 매서드를 따로 작성하지 않아도 됩니다.

아래는 로그인 테스트를 하기 전에 설정해야되는 부분입니다.

로그인이 완료되었을 때 Security가 만든 session에 값을 저장하게 되는데,
Security가 만든 session에 들어갈 수 있는 객체 타입이 Authentication 타입이어야 합니다.
Authentication는 User의 정보를 가지는데
그 객체타입은 UserDetails 타입입니다.

session(Authentication(UserDetails)) // 와 같은 구조입니다.

Config.Auth.PrincipalDetails 클래스

PrincipalDetails 클래스는 UserDetails를 상속받아
UserDetails가 가진 추상 매서드들을 @Override합니다.

PrincipalDetails는 UserDetails를 상속받으므로 형변환되어 Authentication에 들어갈 수 있는 클래스가 됩니다.

Config.Auth.PrincipalDetailsService 클래스


로그인폼에서 입력받은 값을 받아와 존재하는 회원인지 확인하는 코드입니다.
여기서 loadUserByUsername매서드의 파라미터이름이 html의 name과 다르면 받아지지 않음을 유의해야합니다.

다른 name을 사용한다면 SecurityConfig파일에서 주석과같은 설정을 하고 html의 name값과
loadUserByUsername매서드의 파라미터 명을 일치시켜 구현 해야합니다.

회원이 존재한다면 반환하는 값은 Authentication에 들어갈 값이 됩니다.

UserRepository


JPA에서 제공하는 JpaRepository를 확장시켜 UserRepository를 작성합니다
JpaRepository는 기본적으로 CRUD기능을 가지고있습니다.

쿼리메서드를 사용하면 application.yml파일에 DB설정 값으로 쿼리를 작성해 다룹니다.

User findByEmail(String email); // 쿼리 메서드를 예시. 
select * frome user where email = ?  // 같은 쿼리문을 만들어내 조건에맞는 정보를 찾아옵니다.

loginForm.html


회원가입이 완료되면 사용자는 로그인폼에 정보를 입력하여 버튼을 누르면
컨트롤러의 /login으로 post매핑이됩니다.


profile
i'm best

0개의 댓글