728x90
반응형
컨트롤러에서 쿠키 사용
사용자의 편의를 위해 아이디를 기억하고, 다음에 로그인 시도 시, 아이디를 자동으로 넣어주는 사이트가 많음
해당 기능을 구현하기 위해 쿠키를 사용한다.
이메일 기억하기 기능 구현 방식
- 로그인 폼에 '이메일 기억하기' 옵션 추가
- 로그인 시에 '이메일 기억하기' 옵션을 선택했으면 로그인 성공 후 쿠키에 이메일 저장
-> 쿠키는 웹 브라우저를 닫더라도 삭제되지 않도록 유효시간을 길게 설정 - 이후 로그인 폼을 보여줄 때 이메일을 저장한 쿠키가 존재하면 입력 폼에 이메일을 보여준다.
컨트롤러에 적용
스프링 MVC에서 쿠키를 사용하는 방법 @CookieValue
@CookieValue 애노테이션 : 요청 매핑 애노테이션 적용 메서드의 Cookie 파라미터에 적용
@GetMapping
public String form(LoginCommand loginCommand, @CookieValue(value = "REMEBER", required = false) Cookie rCookie,
HttpSession session) {
if(rCookie != null) {
loginCommand.setEmail(rCookie.getValue());
loginCommand.setRemeberEmail(true);
}
return "login/loginForm";
}
- @CookieValue value : 쿠키의 이름 지정 REMEMBER 이름의 쿠키를 Cookie타입으로 전달받음
- required : (기본값 :true), 지정한 이름을 가진 쿠키가 존재하지 않을 수 있어 false로 지정
- required가 true 인 상태에서 지정한 이름을 가진 쿠키가 존재하지 않는다면 스프링 MVC는 익셉션을 발생
- 커맨드 객체를 사용해 폼을 출력하므로 REMEMBER 쿠키가 존재하면 입력 폼의 email 프로퍼티에 쿠키값이 채워져 출력
쿠키를 생성하는 로그인 처리 메서드
@PostMapping
public String submit(LoginCommand loginCommand, Errors errors, HttpSession session, HttpServletResponse response) {
new LoginCommandValidator().validate(loginCommand, errors);
if (errors.hasErrors()) {
return "login/loginForm";
}
try {
AuthInfo authInfo = authService.authenticate(loginCommand.getEmail(), loginCommand.getPassword());
System.out.println(authInfo.getName());
// 세션에 정보담기
session.setAttribute("authInfo", authInfo);
Cookie remeberCookie = new Cookie("REMEBER", loginCommand.getEmail());
remeberCookie.setPath("/");
if(loginCommand.isRemeberEmail()) {
remeberCookie.setMaxAge(60 * 60 * 24 * 30); //30일
} else {
remeberCookie.setMaxAge(0); //키 삭제
}
response.addCookie(remeberCookie);
return "login/loginSuccess";
} catch (WrongIdPasswordException e) {
errors.reject("idPasswordNotMatching");
return "login/loginForm";
}
}
- 실제로 REMEMBER 쿠키를 생성하는 메서드
- 쿠키 생성하기위해 HttpServletResponse타입 추가
- 로그인에 성공하면 이메일 기억하기 여부에 따라, 30일동안 유지되는 쿠키 생성, 아니면 바로 삭제되는 쿠키를 생성
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] @DateTimeFormat 변환 처리 (0) | 2024.05.29 |
---|---|
[Spring] 인터셉터 사용해보기 (0) | 2024.05.22 |
[Spring] HttpSession 사용해보기 (0) | 2024.05.20 |
[Spring] Bean Validation 검증 (0) | 2024.05.18 |
[Spring] 컨트롤러 범위 Validator @InitBinder (0) | 2024.05.18 |
728x90
반응형
컨트롤러에서 쿠키 사용
사용자의 편의를 위해 아이디를 기억하고, 다음에 로그인 시도 시, 아이디를 자동으로 넣어주는 사이트가 많음
해당 기능을 구현하기 위해 쿠키를 사용한다.
이메일 기억하기 기능 구현 방식
- 로그인 폼에 '이메일 기억하기' 옵션 추가
- 로그인 시에 '이메일 기억하기' 옵션을 선택했으면 로그인 성공 후 쿠키에 이메일 저장
-> 쿠키는 웹 브라우저를 닫더라도 삭제되지 않도록 유효시간을 길게 설정 - 이후 로그인 폼을 보여줄 때 이메일을 저장한 쿠키가 존재하면 입력 폼에 이메일을 보여준다.
컨트롤러에 적용
스프링 MVC에서 쿠키를 사용하는 방법 @CookieValue
@CookieValue 애노테이션 : 요청 매핑 애노테이션 적용 메서드의 Cookie 파라미터에 적용
@GetMapping
public String form(LoginCommand loginCommand, @CookieValue(value = "REMEBER", required = false) Cookie rCookie,
HttpSession session) {
if(rCookie != null) {
loginCommand.setEmail(rCookie.getValue());
loginCommand.setRemeberEmail(true);
}
return "login/loginForm";
}
- @CookieValue value : 쿠키의 이름 지정 REMEMBER 이름의 쿠키를 Cookie타입으로 전달받음
- required : (기본값 :true), 지정한 이름을 가진 쿠키가 존재하지 않을 수 있어 false로 지정
- required가 true 인 상태에서 지정한 이름을 가진 쿠키가 존재하지 않는다면 스프링 MVC는 익셉션을 발생
- 커맨드 객체를 사용해 폼을 출력하므로 REMEMBER 쿠키가 존재하면 입력 폼의 email 프로퍼티에 쿠키값이 채워져 출력
쿠키를 생성하는 로그인 처리 메서드
@PostMapping
public String submit(LoginCommand loginCommand, Errors errors, HttpSession session, HttpServletResponse response) {
new LoginCommandValidator().validate(loginCommand, errors);
if (errors.hasErrors()) {
return "login/loginForm";
}
try {
AuthInfo authInfo = authService.authenticate(loginCommand.getEmail(), loginCommand.getPassword());
System.out.println(authInfo.getName());
// 세션에 정보담기
session.setAttribute("authInfo", authInfo);
Cookie remeberCookie = new Cookie("REMEBER", loginCommand.getEmail());
remeberCookie.setPath("/");
if(loginCommand.isRemeberEmail()) {
remeberCookie.setMaxAge(60 * 60 * 24 * 30); //30일
} else {
remeberCookie.setMaxAge(0); //키 삭제
}
response.addCookie(remeberCookie);
return "login/loginSuccess";
} catch (WrongIdPasswordException e) {
errors.reject("idPasswordNotMatching");
return "login/loginForm";
}
}
- 실제로 REMEMBER 쿠키를 생성하는 메서드
- 쿠키 생성하기위해 HttpServletResponse타입 추가
- 로그인에 성공하면 이메일 기억하기 여부에 따라, 30일동안 유지되는 쿠키 생성, 아니면 바로 삭제되는 쿠키를 생성
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] @DateTimeFormat 변환 처리 (0) | 2024.05.29 |
---|---|
[Spring] 인터셉터 사용해보기 (0) | 2024.05.22 |
[Spring] HttpSession 사용해보기 (0) | 2024.05.20 |
[Spring] Bean Validation 검증 (0) | 2024.05.18 |
[Spring] 컨트롤러 범위 Validator @InitBinder (0) | 2024.05.18 |