티스토리 뷰

dev_공부일지/spring boot + intelliJ

session

dev_0hoon 2023. 6. 6. 11:20
//@GetMapping("/")
    public String homeLoginV03(Model model, HttpServletRequest request){

        HttpSession session = request.getSession(false);
        if(session != null){
            return "home";
        }

        Member member = (Member)session.getAttribute(SessionConst.LOGIN_MEMBER);

        if(member == null){
            return "home";
        }

        model.addAttribute("member",member);

        return "homelogin";
    }

    @GetMapping("/")
    public String homeLoginV03Spring(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false)Member member, Model model, HttpServletRequest request){

        //아래 코드는 파라미터로 대체 될 수 있다.
        /*
        HttpSession session = request.getSession(false);
        if(session != null){
            return "home";
        }

        Member member = (Member)session.getAttribute(SessionConst.LOGIN_MEMBER);
        */


        if(member == null){
            return "home";
        }

        model.addAttribute("member",member);

        return "homelogin";
    }

 

 

TrackingModes
로그인을 처음 시도하면 URL이 다음과 같이 jsessionid 를 포함하고 있는 것을 확인할 수 있다.

  http://localhost:8080/;jsessionid=F59911518B921DF62D09F0DF8F83F872

이것은 웹 브라우저가 쿠키를 지원하지 않을 때 쿠키 대신 URL을 통해서 세션을 유지하는 방법이다. 이 방법을 사용하려면 URL에 이 값을 계속 포함해서 전달해야 한다. 타임리프 같은 템플릿은 엔진을 통해서 링크를 걸면 jsessionid URL에 자동으로 포함해준다. 서버 입장에서 웹 브라우저가 쿠키를 지원하는지 하지 않는지 최초에는 판단하지 못하므로, 쿠키 값도 전달하고, URLjsessionid 도 함께 전달한다.

URL 전달 방식을 끄고 항상 쿠키를 통해서만 세션을 유지하고 싶으면 다음 옵션을 넣어주면 된다. 이렇게 하면 URLjsessionid 가 노출되지 않는다.

application.properties
  server.servlet.session.tracking-modes=cookie
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함