로그인 처리 1 - 쿠키, 세션 2
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 🔔 목표앞서 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있었다. 이 문제를 해결하려면 결국 중
velog.io
위에서 가져왔다 설명 짱잘되어있다.
방법 1
@PostMapping("login")
public String loginV2(@Valid @RequestBody LG0010VO form,
BindingResult bindingResult, HttpServletResponse response, HttpServletRequest request) {
if (bindingResult.hasErrors()) {
return "login/loginForm";
}
LG0010VO loginMember = LG0010Service.login(form);
if (ObjectUtils.isEmpty(loginMember)) {
bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
return "login/loginForm";
}
//로그인 성공 처리
// 세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성
HttpSession session = request.getSession();
// 세션에 로그인 회원 정보 보관
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
return "redirect:/";
}
로그인 아이디 비밀번호 확인해서 Session 생성으로 로그인 처리를 하는데,
핵심은 HttpSession session = request.getSession(); 세션을 만들고
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); setAttribute로 세션에 로그인 정보를 담는다
LG0010VO loginMember = (LG0010VO)session.getAttribute(SessionConst.LOGIN_MEMBER);
model.addAttribute("member", loginMember);
컨트롤러에서 세션을 불러올 때,
getAttribute로 key값인 sessionConst.LOGIN.MEMBER를 불러와 사용한다. ( loginMember.getLoginId() )
public class SessionConst {
public static String LOGIN_MEMBER = "loginMember";
}
key값은 상수로 따로 Class를 만들어 주었다.
방법 2
@SessionAttribute
session을 가져올 때만 사용한다.
@GetMapping("/")
public String homeLoginV3Spring(
@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) {
// 세션에 회원 데이터가 없으면 home
if (loginMember == null) {
return "home";
}
// 세션이 유지되면 로그인으로 이동
model.addAttribute("member", loginMember);
return "loginHome";
}
@SessionAttribute에 미리 key값으로 정의해둔 LOGIN_MEMBER를 가져와서 member에 담아 사용한다.