첫번째 방법
컨트롤러 메서드의 매개변수에 HttpSession session 타입을 받으면 servlet api의 세션을 받아 사용하게 된다.
@PostMapping("/login")
public Boolean login(@RequestParam(value = "id") String id, @RequestParam(value = "pw") String pw, HttpSession session) {
final String userId = "admin";
final String userPw = "1234";
if(id.equals(userId) && pw.equals(userPw)) {
session.setAttribute("loginId", userId);
return true;
}
return false;
}
두번째 방법
model.addAttribute 사용하는 방법
@SessionAttributes(value="loginId") 어노테이션과 같이 사용해야한다.
- 어노테이션을 사용하지 않으면 request와 같은 생명주기를 가지게 되기 때문에 session 생명주기와 맞추기 위한 방법이다.
@Slf4j
@RestController
@SessionAttributes(value="loginId") // 모델속성 중 loginId라는 키는 생명주기가 세션과 동
public class HelloController {
@PostMapping("/login")
public Boolean login(Model model, @RequestParam(value = "id") String id, @RequestParam(value = "pw") String pw) {
final String userId = "admin";
final String userPw = "1234";
if(id.equals(userId) && pw.equals(userPw)) {
model.setAttribute("loginId", userId);
return true;
}
return false;
}
}