Backend

홈페이지 최초접속 시 url에 jsessionid 자동으로 안붙게하기

연_우리 2021. 12. 20. 14:01
반응형

스프링으로 로그인 기능 구현 후 브라우저를 켜고 최초 로그인 시에 url에 자동으로 jsessionid이 붙는것을 확인했다

서버는 /login에서 새로운 세션을 만들어서 클라이언트에게 반환해준다

이때 서버는 클라이언트가 쿠키 지원여부를 모르기때문에 URL과 쿠키 두 곳에 jsessionid을 반환해준다.

 

클라이언트는 다음 요청에서 쿠키로 jsession을 보낼 수 있다면 url에 jsession을 생략하고

쿠키로 jsession을 보낼 수 없다면 url에 jsession을 붙이게된다.

 

@PostMapping("/login")
  public String loginOk(@Validated @ModelAttribute Member member, BindingResult bindingResult, HttpServletRequest request, @RequestParam(defaultValue = "/") String redirectURL){
    BindingResult newBindingResult = memberService.loginValidCheck(member, bindingResult);

    if(newBindingResult!=null && newBindingResult.hasErrors()){
    	return "member/login";
    }else{
    HttpSession session = request.getSession(); // 세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성하여 반환

    Member loginMember = memberRepository.findByEmail(member.getEmail()).orElse(null);
    session.setAttribute(SessionConstants.LOGIN_MEMBER, loginMember);   // 세션에 로그인 회원 정보 보관

    return "redirect:"+redirectURL;
  }
}
@Controller
public class HomeController {
  @GetMapping("/")
  public String index(@Login Member loginMember, Model model){

  //세션에 회원데이터가 없으면 홈으로 이동
  if (loginMember == null) {
  	return "index";
  }

  // 세션이 있으면 model에 담아 홈으로 이동
  model.addAttribute("loginMember", loginMember);
  return "index";
  }
}

 

 

application.yml에 아래 코드를 작성해준다

server:
  session:
    tracking-modes: cookie  #최초접속 시 url에 jsession안붙게

해결!

반응형
  • 네이버 블러그 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 구글 플러스 공유하기
  • 카카오톡 공유하기