headr에 있는 회원정보를 클릭하면 이동할수 있는 href를 걸어주었다.
url 연결은 간단하기 떄문에 따로 적지 않겠다.
principal은 Security에서 가지고 있는 User의 정보이다.
== 접속해있는 User의 정보를 그대로 가지고 있는 것이 principal이다.
그러기 때문에 principal에 있는 User를 접근을 할수 있다.
-> 코드에서도 이런 방식으로 사용하였다.
value="${principal.user.username}"
어려움이 별다르게 없는 코드이다.
-> 여기서 Point!는 새로 인코딩 해야 한다는 점이다.
password는 암호화 과정을 거치기 떄문에 1111로 수정이 되어서 암호화 없이 저장을 한다면 그대로 1111이 DB에 저장이 된다.
username, password를 이용하여 로그인 요청이 들어오게 되면 AutheticationFilter에서 값을 가져 가게 된다.
UsernamePasswordAutheticationToken을 AuthenticationManager에게 값을 던져주게 되면
해당 username과 password에 대해서 세션을 만들어 주게 된다.
그렇게되면 AuthenticationManager는 username을 UserDetailService에게 보내주다.
그렇게 되면 UserDetailService가 DB를 통해서 해당 username이 있는지 확인을 하고 만약 값이 있다면 AuthenticationManager에게 있다고 알려준다.
그후 AuthenticationManager는 비밀번호를 암호화한뒤 다시 확인하고 이떄 Authentication이라는 객체를 만들어서 시큐리티 컨텍스트에 저장을 한다.
===============================================
정리하자면 값을 받게되면 필터가 가져가고 그후 토큰을 하나 만든다.
그허 매니저에게 던지는데 그 이유는 Authentication객체를 만들기 위함이다.
이것을 만들기 위해서는 실제로 데이터가 있는지 확인을 해야 하기 떄문에 UserDetailService를 통해서 확인을 하고 있으면 들어온 값의 비밀번호를 암호화해서 객체를 만든뒤 시큐리티 컨텍스트에 만든 객체를 저장한다.
그러기 떄문에 코드를 구성하여 자체적으로 세션을 바꿔주어야 한다.
내가 코드로 구현하고자 하는 그림이다.
새로운 UsernamePasswordAuthenticationToken을 만들어서 이것을 Manager을 통해서 Authentication객체를 강제로 만드는 코드이다.
이떄 중요한점이(영상에서도 이걸로 오랜시간이 걸렸는데) user.js를 수정해주어야 한다.