본문 바로가기

반응형

프로그래밍/JAVA & SPRING

[기타] 봄이네집 스프링 - (1) Spring Security - Auth0 JWT Library Spring Security 레퍼런스 문서 함께 읽기 Spring Security 의 내부 구현체들 알아보기 jwt 맛보기 모든 인증은 AJAX 요청 기반으로 이뤄진다. HS-256 기반으로 암호화된 JWT를 발급한 후 HttpServletResponse로 돌려줄 수 있어야 한다. Controller에 method security를 적용한다. 소셜공급자(naver, kakao, facebook...)를 통한 로그인을 구현하기 위해 기초 작업을 한다. 이때 FE에서의 인증 플로우는 Implicit Crant Flow를 따른다. 스프링시큐리티가 실제로 어렵고 복잡하다. ==> 구현체도 많고 다양한 스펙들을 지원하기 때문에 방대해지고 알아야 할게 많다. 레퍼런스가 jwt같다. ==> django의 레퍼런스는 .. 더보기
[LifeSoft] spring 30강 Spring Security 18. 스프링 시큐리티 가. 스프링 시큐리티의 개요 1) 웹 보안의 3요소 가) 인증(Authentication) : 애플리케이션의 작업을 수행할 수 있는 주체(사용자). 현재 접속중인 사용자가 누구인지 확인하는 과정 나) 권한 인가(Authorization) : 인증된 주체가 애플리케이션의 동작을 수행 할 수 있도록 허락되어있는지 증명하는 과정. 현재 사용자가 특정 url에 접속할 권한이 있는지 검사하는 과정 다) UI 처리 : 권한이 없는 사용자가 접근할 경우의 에러 화면 등을 보여주는 과정. 2) 스프링 시큐리티 개발자가 직접 처리하던 보안 처리과정을 스프링 프레임워크에서 제공하는 스프링 시큐리티를 사용하여 사용권한 관리, 비밀번호 암호화, 회원가입 처리, 로그인, 로그아웃 등의 웹 보안 관련 기능.. 더보기
[LifeSoft] spring 25강 Spring Boot와 Oracle 연동, Thymeleaf Template 적용 15. spring boot 가. spring boot 2014년부터 개발되었으며 spring legacy project에 비해서 설정이 매우 간소화됨 WAS(tomcat)가 포함되어 있으므로 서버 설정이 간소화됨 아직 실무에서 많이 사용되지 않고 있지만 향후 spring legacy project를 대체하리라 예상됨 1) Spring Starter Project 생성 Name : 프로젝트 이름(spring03_boot) Artifact : spring03_boot Package : com.example.spring03 New Spring Starter Project Dependencies 창에서 Boot Version : 최신 버전 2.1.4 SQL : MySQL, JDBC Mybatis 체크 Temp.. 더보기
[LifeSoft] spring 24강 도로명 주소(daum api) 14. 도로명 주소 가. 도로명 주소 사이트 - 행정자치부 http://www.judo.go.kr - 개발자센터에서 API 신청 가능 https://www.juso.go.kr/addrlink/devAddrLinkRequestWrite.do?returnFn=write&cntcMenu=URL 나. 우편번호, 주소 서비스 방법 1) 직접 구축 209년 4월 현재 건물 DB 다운로드 141MB, 압축풀면 1.72GB https://www.juso.go.kr/addrlink/addressBuildDevNew.do?menu=mainJusoDb - 예를 들어 세종시 자료를 엑셀에서 읽어들임(구분자:|) - 텍스트 파일을 엑셀로 읽어서 (구분자 |) csv로 변환한 후 필요한 컬럼만 선택한 후 저장 위의 주소로 다운로.. 더보기
[LifeSoft] spring 23강 게시판 만들기4( 게시물 수정, 파일 첨부, 첨부파일 삭제, 게시물 삭제) -- 첨부파일 테이블 drop table attach cascade constraints; create table attach ( fullName varchar2(150) not null, -- 첨부파일 이름(uuid) bno number not null, -- 게시물 번호 regdate date default sysdate, -- 업로드 날짜 primary key(fullName) ); -- bno 컬럼에 foreign key 설정 alter table attach add constraint fk_board_attach foreign key(bno) references board(bno); foreign key bno는 board테이블의 게시물 번호(board(bno))이어야 한다. insert int.. 더보기
[LifeSoft] spring 22강 게시판만들기3 (상세화면, 댓글쓰기/댓글목록/댓글갯수) board/view.jsp 글일기페이지를 구현한다. 글읽기에서 ckeditor를 추가하고 이미지를 업로드 해본다. 댓글 기능을 구현한다. -- 댓글 테이블 drop table reply cascade constraints; create table reply ( rno number not null primary key, -- 댓글번호 bno number default 0, -- 원글번호 replytext varchar2(1000) not null, -- 댓글내용 replyer varchar2(50) not null, -- 댓글 작성자 아이디 regdate date default sysdate, -- 댓글 작성 날짜 updatedate date default sysdate -- 댓글 수정 날짜 ); -- f.. 더보기
[LifeSoft] spring 22강 게시판만들기3 (상세화면, 댓글쓰기/댓글목록/댓글갯수) board/view.jsp 글일기페이지를 구현한다. 글읽기에서 ckeditor를 추가하고 이미지를 업로드 해본다. 댓글 기능을 구현한다. -- 댓글 테이블 drop table reply cascade constraints; create table reply ( rno number not null primary key, -- 댓글번호 bno number default 0, -- 원글번호 replytext varchar2(1000) not null, -- 댓글내용 replyer varchar2(50) not null, -- 댓글 작성자 아이디 regdate date default sysdate, -- 댓글 작성 날짜 updatedate date default sysdate -- 댓글 수정 날짜 ); -- f.. 더보기
[LifeSoft] spring 21강 게시판 만들기2( 페이지 나누기, 검색 기능 ) 글목록 수정 현재 게시물 목록을 보면 '이름'이 찍혀야 하는데 '아이디'가 보이고 있다. 이름(name)은 게시판(board) 테이블에는 없고 회원(member) 테이블에 있다. -- 게시판 테이블과 회원 테이블 join select bno, title, writer, name, regdate, viewcnt from board b, member m where b.writer=m.userid order by bno desc; 이 코드를 mybatis에 기존 코드를 수정해 보자 (listAll) board/list.jsp 에서 ${row.writer} => ${row.name} 페이지 나누기 delete from board -- 게시물 1000개 입력 (pl /sql 코드를 돌려 입력한다.) 아이디는 me.. 더보기
[LifeSoft] spring 20강 게시판 만들기1(목록, 글쓰기) 13. 게시판 가. 게시판의 주요 기능 1) 기본 기능 로그인 후 게시물 등록, 수정이 가능하도록 처리 글쓰기(스마트에디터 적용, 태그 문자 처리, 공백처리, 줄바꿈 처리) 게시물 상세정보, 조회수 증가 처리 게시물 수정 게시물 삭제(delete 방식) 게시물 삭제(update 방식) 검색기능 페이지 나누기 2) 파일업로드(ajax) 게시판에 파일 첨부 첨부파일 목록, 다운로드, 삭제 수정화면에서 새로운 파일 올리기 3) 댓글 기능 일반적인 방식으로 댓글 쓰기(RestController, Rest 방식) $.ajax() 함수 호출하여 insert 컨트롤러에서 뷰로 포워딩한 responseText를 html 태그에 출력 컨트롤러에서 ArrayList를 json 형식으로 리턴받아 댓글 목록 출력(list_j.. 더보기
[LifeSoft] spring 19강 Smart Editor(CKEditor, SummerNote) 12. Smart Editor 가. Smart Editor WYSIWYG Editor (위지윅 에디터, what yout see is what you get) - 사용자가 현재 화면에서 모고 있는 내용과 동일한 html codr를 생성하는 에디터 - 네이버. 다음 에디터, CKEditor(자바 쪽 많이씀), SummerNote 등 나. CKEditor - http://ckeditor.com - 현재 CKEditor5 버전이 최신 버전이지만 여기서는 안정화된 버전인 CKEditor 4.11.2 버전으로 실습함 - 이미지 업로드를 위해서는 별도의 작업이 필요함 - 적용 예 게시물 작성 ckeditor 홈페이지에서 download - https://ckeditor.com/ckeditor-4/download/ .. 더보기
[LifeSoft] spring 18강 이메일 보내기 가. 이메일 서비스 구축 방법 이메일 발송을 위해서는 메일 서버가 필요함 - 자체 구축 - 포털사이트에서 제공하는 smtp(Simple Mail Transfer Protocol) server 활용 - gmail의 경우 : 내 계정 - 로그인 및 보안 - 기기 활동 및 보안관련 활동 - 보안 수준이 낮은 앱 허용 옵션을 사용으로 설정해야 함. *** 찾기 힘들다면 아래를 참고 내 계정 화면 - 보안 으로 가서 밑으로 내려오면 보안 수준이 낮은 앱의 액세스에 들어가서 허용으로 바꿈 나. 실습예제 1) pom.xml에 라이브러리 추가 빌드가 잘 안될 경우 스프링의 버전을 조정할 필요가 있음 비슷한 이름의 라이브러리가 있으므로 artifactid를 정확히 확인하고 추가해야 함. javax.mail mail 1... 더보기
[LifeSoft] spring 15강 인터셉터(Interceptor) 8. Interceptor (인터셉터) 가. Interceptor (인터셉터) - 클라이언트의 요청 전후에 특정 작업을 처리하고자 할 때 사용하는 기능 매개변수 = HttpServletRequest. HttpServletResponse 용도 - 로그인 처리, pc웹/모바일웹 분기 처리 등. 코드에서 세션처리를 매번 넣어주었었다. 디바이스의 USERAGENT를 파악해서 이동을 시켜준다. 비슷한 기능이 많이 있는데 필터를 보면 인코딩 처리할때 필터를 설정했다. web.xml의 아래쪽에 보면 모든 url 을 요청할때 스프링이 지원하는 charactor encoding filter가 실행되어서 코드에서 인코딩에 대해 전혀 신경쓰지 않아도 된다. 필터는 선처리만 된다. Request | Filter | Inter.. 더보기
[LifeSoft] spring 14강 AOP와 트랜잭션 처리 실습 주의 : [org.springframework.web.servlet.PageNotFound.noHandlerFound:1248]- No mapping for POST /spring02/messages 라는 오류메시지가 뜨면 mapping 실수이다. 반듯이 아래와 같이 매핑을 하자. @RestController @RequestMapping("/messages") public class MessageController { @Inject MessageService service; @RequestMapping(value="" , method = RequestMethod.POST) public ResponseEntity addMessaged (@RequestBody MessageDTO dto ) { ... } }.. 더보기
[LifeSoft] spring 13강 AOP의 개요, 로그수집 예제 사. AOP 실습예제 사용자가 메시지를 남기면 포인트 10 증가 메시지를 읽으면 포인트 5 증가 com.example.spring02.aop MessageAdvice.java com.example.spring02.controller.message. MessageController.java com.example.spring02.model.message.dto UserDTO.java MessageDTO.java com.example.spring02.model.message.dao MessageDAO.java MessageDAOImpl.java PointDAO.java PointDAOImpl.java com.example.spring02.service.message MessageService.java Mess.. 더보기
[LifeSoft] spring 12강 Google Chart, JFree Chart 6. 차트 가. 구글차트 1) https://google-developers.appspot.com/chart/ 2) 사용 예 구글 서버에 데이터만 넘겨주면 차트를 그려준다. 3) 작업순서 1. pom.xml에 라이브러리 추가 com.googlecode.json-simple json-simple 1.1.1 com.fasterxml.jackson.core jackson-databind 2.9.8 2. 자바스크립트를 이용하여 차트 작성에 필요한 JSON 데이터를 리턴받아 화면에 출력시킴 3. JSON 데이터의 형식 { "cols": [ {"id":"","label":"Topping","pattern":"","type","string"}, {"id":"","label":"Slices","pattern":"",".. 더보기