#UserController.java
->자동로그인(loginCookie) 만료시간은 3개월뒤로 설정하였습니다
|
//로그인구현
@PostMapping("/loginCheck")
public String login(@RequestBody UserVO input , HttpSession session ,HttpServletResponse response) {
BCryptPasswordEncoder encode = new BCryptPasswordEncoder();
System.out.println(input);
String result = null;
UserVO db = service.getUser(input.getId());
if(db != null) {
if(encode.matches(input.getPassword(),db.getPassword())) {
session.setAttribute("login",db);
//사용자가 자동로그인을 체크했을시에 실행
if(input.isAutoLogin()) {
//3개월뒤의 초
long second = 60 * 60 * 24 * 90;
//쿠키생성
Cookie cookie = new Cookie("loginCookie",session.getId());
cookie.setPath("/");
cookie.setMaxAge((int)second);
response.addCookie(cookie);
//3개월뒤의 밀리초를 날짜로 변환
long millis = System.currentTimeMillis() + (second * 1000);
Date limitDate = new Date(millis);
System.out.println(limitDate);
//DB에 세션아이디,쿠키만료날짜,회원 아이디 전달
service.autoLogin(session.getId(),limitDate,input.getId());
}
result = "loginSuccess";
}else {
result = "pwFail";
}
}else {
result = "idFail";
}
System.out.println(result);
return result;
}
//로그아웃처리
@PostMapping("/logout")
public String logout(HttpSession session , HttpServletRequest request , HttpServletResponse response) {
UserVO user = (UserVO)session.getAttribute("login");
System.out.println(user);
if(user!= null) {
session.removeAttribute("login");
session.invalidate();
Cookie cookie = WebUtils.getCookie(request,"loginCookie");
//자동로그인을 한 상태의 사용자가 로그아웃을 할 경우
if(cookie != null) {
cookie.setMaxAge(0);
response.addCookie(cookie);
service.autoLogin("none",new Date(),user.getId());
}
}
return "logoutSuccess";
}
|
cs |
'Spring Boot 개인 프로젝트 > 회원관리 REST-API서버 구축' 카테고리의 다른 글
(8) Postman을 사용하여 자동로그인 구현 테스트 해보기 (1) | 2021.09.23 |
---|---|
(7 - 4)(자동로그인 구현) ILoginService인터페이스와 LoginService클래스에 코드 추가 (0) | 2021.09.23 |
(7 - 4)(자동로그인 구현) IUserMapper인터페이스와 UserMapper.xml 파일에 코드 추가 (0) | 2021.09.23 |
(7 - 3)(자동로그인 구현) UserVO클래스에 sessionId,limitDate ,autoLogin 필드 추가하기 (0) | 2021.09.23 |
(7 - 2)(자동로그인 구현) login_user테이블에 session_id와 limit_date컬럼추가 (0) | 2021.09.23 |