2020-12-30

jsbak·2020년 12월 30일
0

도식화의 이유
1. 구조 파악
2. 왜 필요한가?

어제 못끝 낸것
1. 파일업로드 O(어제)
2. 접근제어 -> 오늘

내일 part2를 이용한 게시판 만들기

지금 모든 회원의 정보를 가져오는 것은 비정상이다.
누군지르 모르는 사람에게 모든 회원의 정보
모든 거래처의 정보를 아무나 가져가게 해서는 안된다. 또한, 아무나 상품 등록을 하면 안된다.

우리는 전혀 인증과 인가의 처리를 하지 않고 있다. 누구나 보호받지 않는 자원을 사용할 수 있는 것이다.

스프링 시큐리티?
비슷한 프레임워크? 오늘은 게시판 못끝낼거같아서 하고싶은데

인증과 인가
제일 중요한것 거래처 정보, 회원의 정보는 아무나 가져가도 누구나 상품을 등록해도 안된다.
보호 자원과, 비 보호 자원을 식별
보호 자원에 대해서 누구에게 허용할지에 대한 인가 정보를 설정해야한다. 누가 정의되야한다
관리자, 슈퍼관리자, 일반회원

보호자원에 대해 어떤 롤? 역할만 접근가능하게

  1. DB에 보호자원이라는 테이블, 자원의 정의를 넣어둔다.
  2. 롤, 롤을 정의, 제일 쉬운방법은 DB
  3. 어떤 롤의접근을 허용하겠다. 보호자원 테이블 -> 롤과 보호자원의 접근여부의 관한 테이블

R.R -> R.e, R.o로 완성된다.
어떤 유저가 어떤 롤을 받았다 라는 정보 U
유저와 롤에 관한 U.R

auth 인증과 인가를 통칭

보호자원을 요구했는지 확인
보호자원이 아니면 최종자원쪽으로 넘긴다.
보호자원이면 접근허용된 권한인가?
그 이전에 우리 사이트 회원인가를 확인 -> 인가된 자, 로그인 상태를 확인

  1. 기존의 어플리케이션을 건들이지 않는다.
  2. 우리 어플리케이션에는 영향이 전혀 없어야한다. D.F.P(Decorating Filter Pattern)

두가지를 만든다.
1. 인증 필터
2. 접근 권한에 관한 인가 필터

보통은 일반 필터 이후에 집어넣는다.

게시판 수업? 주의
며칠안에 게시판 만들어봐라, 게시판을 몇일만에 해결할 수 있는가?, 게시판안에는 필드에서 하는 모든 것이 포함되어있다. (그래서 중요)

게시판 설계부터 진행
어플리케이션 설계 부터 진행하겠다.

게시판 DB설계

CREATE TABLE BOARD (
	BO_NO	NUMBER(6), --글번호	PK
    	BO_CONTENT	CLOB, --내용		
    	BO_TITLE	VARCHAR2(50 CHAR) NOT NULL, --제목		 NN
    	BO_WRITER	VARCHAR2(20 CHAR) NOT NULL, --작성자		 NN
	BO_DATE	DATE  DEFAULT SYSDATE, --날짜	
	BO_HIT	NUMBER(4) DEFAULT 0,    --조회수	
	BO_REC	NUMBER(4)   DEFAULT 0, --추천수	 레코맨드?
 	BO_PASS	VARCHAR2(200) NOT NULL,	--비밀번호? NN (오픈형이니까 자기가 쓴것을 수정 가능, 암호화 예정)
	BO_IP	VARCHAR2(50)	NOT NULL, --IP	
	BO_MAIL VARCHAR2(50 CHAR),  --이메일	
	BO_PARENT	NUMBER(6),	--상위글번호 -- 자기 참조형
    CONSTRAINT PK_BOARD PRIMARY KEY (BO_NO)
);

CREATE TABLE ATTACH( -- 파일업로드 저장소(MT, DB) 골라야하는데 퍼포먼스? 저장소 MT, 메타데이터만 DB에 저장, 이진과 메타 데이터 를 둘다 삭제 해야하기 때문에 바로 CASCADE 하지 않는다.
	ATT_NO NUMBER(6),	--파일번호    PK(규칙성에 파일순서도?)
	ATT_SAVENAME	VARCHAR2(70 CHAR)	NOT NULL, --저장명	미들티어에 저장하는 2진데이터, MT에 저장할 파일명?
	ATT_FILENAME	VARCHAR2(50 CHAR)	NOT NULL,--원본파일명
	ATT_MIME	VARCHAR2(30 CHAR),  --MIME(확장자)
	BO_NO NUMBER(6)	NOT NULL,  --글번호
	ATT_FILESIZE NUMBER(10)	NOT NULL,--파일크기
	ATT_FANCY	VARCHAR2(30)    NOT NULL, --팬시크기
	ATT_DOWNCOUNT NUMBER(4) DEFAULT 0,  --다운로드수
    CONSTRAINT PK_ATTATCH PRIMARY KEY (ATT_NO),
    CONSTRAINT FK_ATTACH_BOARD FOREIGN KEY (BO_NO) REFERENCES BOARD(BO_NO)
);
--
CREATE TABLE REPLY (
	REP_NO NUMBER(6),--덧글번호(PK)	PK
	REP_WRITER	VARCHAR2(20 CHAR) NOT NULL, --작성자	NN	
	REP_DATE	DATE	DEFAULT SYSDATE, --날짜
	REP_PASS	VARCHAR2(200)	NOT NULL, --비밀번호
	REP_CONTENT	VARCHAR2(100 CHAR),	--내용
    	BO_NO NUMBER(6)	NOT NULL, --글번호
	REP_IP VARCHAR2(50)	NOT NULL,   --IP
    CONSTRAINT PK_REPLY PRIMARY KEY (REP_NO),
    CONSTRAINT FK_REPLY_BOARD FOREIGN KEY (BO_NO) REFERENCES BOARD(BO_NO) ON DELETE CASCADE
);

오늘은 목록 조회 완성

게시글 등록까지만 가보자?

PROD는 웹 리소스로 저장해서 Controller에 저장
우리는 서버에 저장하기 때문에 비지니스 로직에서 파일 저장하는 코드를 넣어도 아무 문제 없다. DB에 게시글, 파일 insert가 성공하면 2진 데이터를 서버에 저장하는 코드가 나온다.
1. 메타데이터 처리
2. 이진데이터 처리

트랜잭션을 어떤 레이어에서 처리해야 제일 효율적인가가 내일 수업

과제

게시판 다 만들기

profile
끄적끄적 쓰는곳

0개의 댓글