v2
★ LAB · BOARD

원시적인 회원가입/로그인

회원과 게시판 — 실습

📍 지금 어디를 만지고 있나요?
브라우저
회원과 게시판
DB

사전 준비

이번 실습의 목표

비밀번호를 그대로 DB 에 저장. 로그인은 SELECT 비교만. 페이지 옮기면 풀림.

1
테이블 + 도메인 + 코드 작성
-- v2 의 테이블 (MySQL)
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 — 페이지 이동 시 로그인 풀림
    }
}
CHECKPOINT
  • SHOW TABLES;mymember 가 보이는가?
  • 컴파일 오류 없는가?
2
실행 + 결과 확인

Run on Server 로 실행하고 회원가입 → DB 확인 → 로그인 순서로 따라갑니다.

CHECKPOINT
  • SELECT id, pwd FROM mymember; — 평문이 그대로 보이는가? (의도된 위험)
  • 로그인 성공 후 다른 페이지 이동 시 「로그인 풀림」 직접 체감했는가?

실습 완료 체크리스트

v2 = 의도적 위험 버전
평문 비밀번호의 위험
세션 없으면 로그인 안 유지
다음 차시들에서 v3 로 진화