Spring boot kim's cafe/로그인

Spring boot 로그인하기! with Security

디비드킴 2021. 6. 14. 10:31

controller에 로그인 페이지를 걸어준다

controller.java

loginpage를 구현해주고

<a href="/oauth2/authorization/google">구글로그인</a>

  <a href="/oauth2/authorization/facebook">페이스북로그인</a>

이거는 스프링에서 oauth2에서 미리 지정해서 논 경로라고 한다 

그리고 여기서 주의할 점

name="username"

name="password"

스프링한테 줄 때 이렇게 해줘야 한다

물론 바꿀 수도 있는데 그냥 안 바꾸고 진행하는 게 편하다!

 

왜 이렇게 받는지는 시큐리티 로그인을 만들면서 봐보자!

 

일단 로그인 성공 시 담을 principaldetail을 만든다

spring으로 자체적으로 제공해주는 userdetails를 임플리먼트 받는다!

principaldetail.java

 

로그인에 성공 했다면

시큐리티 전용 세선에 authentication으로 감싸 져서(?)

들어가게 된다

사용 시에는

security session=>authentication=>userdetails순서대로 꺼내진다

 

로그인을 하기 위한 서비스를 만든다

UserDetails loadUserByUsername

라는 자체로 제공해주는 기능을 상속받아서 사용한다

보면 기본 받는 값이 username이다 

그렇기 때문에 html에서 쏴줄 때도 username로 쏴줘야 한다

이메일로 db에서 찾아서 꺼내온다 그래서 존재하면

비밀번호를 비교한다(비밀번호는 알아서 처리한다고 한다)

그리고 위에 만든 principaldetial를 만들어줘서 리턴해준다

 

그리고 이제 시큐리티로 와서 이위에 것들이 작동할 수 있게

로그인이 발생하면 가로채 주기를 해준다!

security.java

.loginPage

는 내가 만든 로그인 페이지로 지정해주고

loginProcessingUrl

로그인 처리는 html에 적은 주소를 넣어준다

여기서 가로채서 로그인판별을 해준다

성공 시

메인 페이지로 보내준다

 

로그인성공

thymealf와 시큐리티를 같이 html에서 사용하는 건데

sec:authorize="isAuthenticated()"

는 시큐리티 세션에 인증이 되었다면

 sec:authentication="name"

인증자 이름을 가져온다

난 이름을 email을 리턴해줬으므로

email이 나온다

 

추가

 if(uservo!=null)꼭 있어야한다

잘못 아이디를 입력하거나 없는아이디를 입력했을때

null이 리턴되서 그렇다