Controller에서 세션사용하여 로그인정보 받아오기
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/board")
public class BoardController {
@GetMapping("/list")
public String list(HttpServletRequest request){
if(!loginCheck(request))
return "redirect:/login";
// 로그인을 안했으면 로그인 화면으로 이동
return "board";
//로그인을 한 상태라면 게시판 화면으로 이동
}
//세션으로 로그인 정보 확인하기
private boolean loginCheck(HttpServletRequest request){
HttpSession session = request.getSession();
//세션 정보 가져오기
return session.getAttribute("id") != null;
//id가 있으면 true 반환
}
}
세션사용하여 로그인정보 저장하기
세션에 로그인정보 저장하여 쿠키로 응답하기
@Controller
public class Login {
@PostMapping("/login")
public String login(String id, String pwd, boolean rememberId,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//아이디와 패스워드 정보 확인하기
if(!loginCheck(id,pwd)){
String message = URLEncoder.encode("id와 password를 입력하세요");
return "redirect:/login?message="+message;
}
//아이디와 패스워드가 일치하는 경우
HttpSession session = request.getSession();
//세션 정보를 가져온다
session.setAttribute("id", id);
//세션 객체에 id 정보를 저장한다
if(rememberId) {
//아이디 정보가 있으면 쿠키를 생성해서 응답한다
Cookie cookie = new Cookie("id", id);
response.addCookie(cookie);
} else {
Cookie cookie = new Cookie("id", id);
cookie.setMaxAge(0);
//쿠키 삭제
response.addCookie(cookie);
}
}
}
스프링에서 제공하는 세션 객체 사용
public String logout(HttpSession session) {
//세션 종료
session.invalidate();
//홈으로 이동
return "redirect:/";
}