회원과 게시판 — 읽기 자료
먼저 의도적으로 어렵게 만들어보자. 평문 저장과 세션 없는 로그인.
비밀번호를 그대로 DB 에 저장. 로그인은 SELECT 비교만. 페이지 옮기면 풀림.
-- v2 의 테이블
CREATE TABLE mymember (
id VARCHAR(50) PRIMARY KEY,
pwd VARCHAR(20) NOT NULL
);
// com.smhrd.domain.Member
@Data @AllArgsConstructor @NoArgsConstructor
public class Member {
private String id;
private String pwd;
}
// com.smhrd.service.MemberService
@Service
public class MemberService {
@Autowired MemberMapper mapper;
public void signup(Member m) {
// 평문 그대로! (의도적으로 위험)
mapper.insert(m);
}
public Member login(String id, String pwd) {
Member m = mapper.selectOne(id);
if (m != null && m.getPwd().equals(pwd)) {
return m;
}
return null;
}
}
// com.smhrd.controller.LoginController
@Controller
public class LoginController {
@PostMapping("/login")
public String login(@RequestParam String id,
@RequestParam String pwd) {
Member m = service.login(id, pwd);
if (m != null) return "redirect:/";
return "redirect:/login?error";
// 세션 저장 X — 페이지 이동 시 로그인 풀림
}
}
먼저 의도적으로 어렵게 만들어보자. 평문 저장과 세션 없는 로그인.
v2 의 두 가지 문제 — 평문 / 무상태 — 를 직접 체감한다.