blog 초기세팅
button을 누르면 username, password의 데이터를 가지고 /login으로 간다.
button은 안에 있는 데이터를 한번에 전송을 한다.
전송해야 할 위치는 컨트롤러의 위치인 action = "/login"으로 정한다.
method는 select하는 쿼리인데
로그인만 예외로 select인데 post를 사용한다.(보통 select는 get이다.)
form태그는 대부분 post이다.
loginDto생성
세션에 접근할려면 request객체가 필요하다.
request객체는 Dispatcher Servlet이 가지고있다.
세션은 Dispatcher Servlet이 있으면 Ioc컨테이너에 넣어놓는다.
key값을 principal이라고 한다.
principal 은 접근 주체로 인증된 유저라는 의미이다.
key값에 principal이 있으면 로그인이 된 것이고, 없으면 안된것이다.
principal이 user object이다.
인증이 된것을 확인할수있다.
브라우저는 요청시마다 쿠키를 가지고온다. 프로토콜이니까
http프로토콜중 하나이다.
브라우저를 종료하면 키(ex : 5768)가 날라간다.
로그아웃하는 방법
1. 브라우저를 종료하면 세션의 user가 자동으로 날라간다.
유효기간은 30분이다.
세션의 유효기간은 web.xml이 짠다.
2. 브라우저를 종료하면 키(ex)5768)를 잃어버린다.
키를 잃어버리면 세션에 접근을 못한다.
유효기간은 30분이다.
3. 강제로 세션쪽에서 삭제하는 방법이다.
세션은 서버(server)의 내저장소이고, 쿠키는 브라우저(client)의 내 저장소이다.
로그아웃
GetMapping을 사용한다.
return은 main페이지로 이동하기때문에 redirect:/을 적어준다.
session.invalidate(); 이 세션영역에 있는 키값의 데이터를 날려버리겠다는 것이다.