반응형
스프링으로 로그인 기능 구현 후 브라우저를 켜고 최초 로그인 시에 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안붙게
해결!
반응형
'Backend' 카테고리의 다른 글
[MyBatis] 객체 안에 리스트, 1:N 관계 데이터 가져오기 (feat. ResultMap, Association, Collection) (0) | 2022.01.20 |
---|---|
Spring + MariaDB + Mybatis 연동 및 실행해보기 (0) | 2021.12.22 |
Cookie와 Session, 그리고 Token (0) | 2021.12.09 |
Spring Validation 정리 (0) | 2021.12.08 |
스프링MVC 기본기능 (0) | 2021.12.03 |