목록BE (354)
오봉이와 함께하는 개발 블로그
로그인 처리 - 직접 만든 세션 적용 지금까지 개발한 세션 관리 기능을 실제 웹 애플리케이션에 적용해보자. LoginController - loginV2() @PostMapping("/login") public String loginV2(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); log.info("login? {}", lo..
로그인 처리 - 세션 직접 만들기 세션을 직접 개발해서 사용해보자. 세션 관리는 크게 3가지 기능을 제공하면 된다 세션 생성 sessionId 생성(임의의 추정 불가능한 랜덤 값) 세션 저장소에 sessionId와 보관할 값 저장 sessionId로 응답 쿠키를 생성해서 클라이언트에 전달 세션 조회 클라이언트가 요청한 sessionId 쿠키의 값으로 세션 저장소에 보관한 값 조회 세션 만료 클라이언트가 요청한 sessionId 쿠키의 값으로 세션 저장소에 보관한 sessionId와 값 제거 SessionManager - 세션 관리 @Component public class SessionManager { private static final String SESSION_COOKIE_NAME = "mySess..
로그인 처리 - 세션 동작 방식 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있었다. 이 문제를 해결하기 위해서는 중요한 정보를 모두 서버에 저장해야 한다. 그리고 클라이언트와 서버는 추정 불가능한 임의의 실별자값으로 연결해야한다. 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라 한다. 세션 동작 방식 로그인 사용자가 logindId, password 정보를 전달하면 서버에서 해당 사용자가 맞는지 확인한다. 세션 저장소를 서버에서 관리한다. Map등의 형태는 어떤 형태이든지 사용하기 편한 형태로 한다. 세션 생성 세션 저장소에 세션 ID를 생성하는데, 추정 불가능해야 한다. UUID는 추정이 불가능하다. Cookie: mySessionId=zz0101xx-bab9-4b..
로그인 처리 - 쿠키 사용 로그인 상태 유지해야 한다. 로그인 상태를 어떻게 유지할 수 있을까? 먼저 쿼리 파라미터를 계속 유지하면서 보내는 방법이 있을 수 있겠다. 하지만 이 방법은 매우 어렵고 번거로운 작업이기 때문에 쿠키를 사용해보자. 쿠키 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달하자. 그러면 브라우저는 앞으로 해당 쿠키를 지속해서 보내준다. 쿠키 참고 : https://5bong2-develop.tistory.com/273 쿠키에는 영속 쿠키와 세션 쿠키가 있는데 우리는 브라우저 종료시 로그아웃 되길 기대하기 때문에 우리는 세션 쿠키가 필요하다. 영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키 : 만든 날짜를 생략하면 브라우저 종료시 까지만 유지 ..
로그인 로그인 기능을 개발해보자. 지금은 로그인 ID, 비밀번호를 입력하는 부분에 집중하자. LoginService @Service @RequiredArgsConstructor public class LoginService { private final MemberRepository memberRepository; // return == null 이면 로그인 실패 public Member login(String loginId, String password) { // Optional findMemberOptional = memberRepository.findByLoginId(loginId); // Member member = findMemberOptional.get(); // if (member.getPas..