HttpSession

jooog·2022년 3월 26일
0

스프링

목록 보기
18/26

🔎Controller에서 Session 활용

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);
        }
    }
}

Logout

스프링에서 제공하는 세션 객체 사용

public String logout(HttpSession session) {
  //세션 종료
  session.invalidate();
  
  //홈으로 이동
  return "redirect:/";
}

0개의 댓글