본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 44일차 (2023-07-24) 자바 프로그래밍_49. 로그인 적용하기_개인프로젝트 - 마트 관리 시스템

by prometedor 2023. 7. 24.
## 49. 로그인 적용하기

- 로그인을 구현하는 방법
- 로그인 정보를 가지고 관련 데이터를 다루는 방법

 

ㄴ MemberAddListener.java 파일을 복사하여 LoginListener 라는 이름의 클래스를 생성함

 

 

ddl2.sql

ㄴ member 테이블에 phone 컬럼을 unique key 로 설정하기

=> 전화번호로 로그인을 하기 위함

 

ㄴ ddl2.sql 에 따라 테이블 구조를 변경함

 

ㄴ phone 컬럼이 unique key 로 설정됨을 확인할 수 있음

 

LoginListener.java

ㄴ 이름 받는 부분을 제거

=> 전화번호를 이용하여 로그인 하기 때문

 

LoginListener.java

ㄴ 관리자와 일반직원 구분을 입력받을 필요 없으므로 제거

 

LoginListener.java

ㄴ 전화번호와 암호로 로그인하기위한 메서드 이용(생성할 것)

 

LoginListener.java

ㄴ memberDao 의 findByPhoneAndPassword 메서드의 리턴값을 loginUser 라는 Member 변수에 담기

 

LoginListener.java

ㄴ loginUser 에 담긴 값이 null 과 같다면 "회원 정보가 일치하지 않습니다" 를 출력하도록 함

 

LoginListener.java

ㄴ while (true) 를 이용하여 무한반복 설정하기

 

MemberDao.java

ㄴ MemberDao 인터페이스에 findByPhoneAndPassword 메서드를 추가하여 관리하도록 함

 

MemberDao.java

ㄴ 같은 findBy 종류끼리 비슷한 위치에 있도록 해줌

 

MySQLMemberDao.java

ㄴ findBy 메서드를 복사하여 바로 밑에 붙여넣고 findByPhoneAndPassword 라는 이름으로 변경해줌

ㄴ 파라미터 값은 Member 타입을 받도록 변경해줌

 

MySQLMemberDao.java

ㄴ phone 과 password 를 이용해 찾을 수 있도록 where절에 phone 과 password 를 추가

 

MySQLMemberDao.java

ㄴ 받아오는 파라미터 변수를 m 으로 하면 헷갈릴 수 있으니 받아오는 파라미터 값을 의미하는 변수명으로 param 으로 변경해줌

 

ClientApp.java

ㄴ execute 가 실행될 때 로그인을 하도록 LoginListener 를 추가해줌

 

ㄴ 현재 report_member 테이블에 존재하는 데이터 값 확인

 

ClientApp.java 실행

ㄴ 회원 정보가 일치하지 않을 경우 "회원 정보가 일치하지 않습니다" 문자열이 출력되고, 일치하는 경우에는 그대로 while 문 무한반복을 진행함

=>

로그인 된 유저는 시스템을 실행할 수 있도록 해야함

 

ClientApp.java

ㄴ loginUser 를 필드에 추가

 

LoginListener.java

ㄴ 로그인에 성공하면 ClientApp 에 있는 loginUser 를 현재 loginUser 에 담은 값으로 설정해준 후 while 문을 나가도록 해줌

 

ClientApp.java 실행하여 확인

ㄴ 로그인에 실패하면 "회원 정보가 일치하지 않습니다." 문구가 출력되고 while 문을 계속 돌고, 로그인에 성공하면 메뉴를 띄워주는 것을 확인

=>

ㄴ 자식 메뉴들도 실행 가능한 것을 확인

 

BoardAddListener.java

ㄴ 게시글 등록 시 로그인 사용자의 정보를 이용할 것이므로 해당 코드는 제거

 

BoardAddListener.java

ㄴ 작성자는 ClientApp의 loginUser 를 이용하여 입력되도록 함

 

BoardUpdateListener.java

ㄴ 작성자는 ClientApp의 loginUser 를 이용하여 입력되도록 함

 

BoardUpdateListener.java

ㄴ 로그인 사용자가 작성한 게시글이 아니라면 변경할 수 없도록 하므로 문구명을 "게시글 변경 권한이 없습니다." 로 변경

 

BoardDeleteListener.java

ㄴ 작성자는 ClientApp의 loginUser 를 이용하여 입력되도록 함

 

BoardDeleteListener.java

ㄴ 로그인 사용자가 작성한 게시글이 아니라면 삭제할 수 없도록 하므로 문구명을 "해당 번호의 게시글이 없거나 게시글 삭제 권한이 없습니다." 로 변경

 

MySQLBoardDao.java

ㄴ where 절에 writer 를 추가하여 해당 게시글의 작성자인지 확인하도록 쿼리문 변경

 

MySQLBoardDao.java

ㄴ 쿼리문에서 password 대신 writer 를 이용하므로 해당 코드도 변경해줌

 

MySQLBoardDao.java

ㄴ where 절에 writer 를 추가하여 해당 게시글의 작성자인지 확인하도록 쿼리문 변경

 

MySQLBoardDao.java

ㄴ 쿼리문에서 password 대신 writer 를 이용하므로 해당 코드도 변경해줌

 

ClientApp.java 실행

ㄴ 본인이 작성한 글은 삭제 가능함을 확인

ㄴ 타인이 작성한 글은 삭제 불가능함을 확인