전체 글 224

4주차 8/21~8/28 WIL

3주차 WIL은 그때 당시 사정으로 적지 못하였다.. 한 주차를 건너뛰고서 작성하려니 조금 마음에 들지않지만.. 앞으로 다 채워나가면 될 일이다! 이번주에도 지난 주와 마찬가지로 스프링을 이용해서 CRUD 기능구현과 추가로 JWT 토큰방식을 이용한 로그인, 인증인가, Spring Security 를 구현했다! CRUD는 조금 적응이 되었으나 jwt와 spring security.. 그리고 JPA 를 이용한 연관관계가 정말 어려웠다.. 이번주의 키워드 ORM (참고블로그) 2022.08.18 - [SPRING] - [SPRING] JPA / ORM [SPRING] JPA / ORM JPA JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준 JPA가 제공하는 API를 사용하면 객체..

22.08.26 (금) 26일 차

오늘 한 것 새로운 주차 팀 SA 작성 알고리즘 1문제 Spring/Java 개념 정리 스프링 프로젝트 (개인과제였지만 입문1주차 과제가 계속이어져서 그냥 프로젝트로) 게시글 CRUD 구현 및 리팩토링 게시글 CRUD 에러파티 ~^^ 에러노트 작성 시작 오늘 배운 것 2022.08.26 - [JAVA] - [JAVA] 제네릭 Generic 2022.08.23 - [SPRING] - [SPRING] Spring Security - 쿠키 vs 세션 vs JWT + Token 2022.08.27 - [SPRING/🚨에러노트[SPRING]] - [22.08.27] Reason: Failed to create query for method Repository.findAllByOrderByModifiedAtDesc..

[22.08.27] JPA 지연로딩 프록시 에러

문제상황 역시 Spring 프로젝트 중 에러,,,, 해당 게시글 작성자만 수정이 가능하도록 하였는데 같은 사용자로 로그인이 되어있음에도 같은 사용자가 아니라고 에러가 떴다. Service단 로직에서는 해쉬코드만 봐서는 똑같아보인다. 왜 자꾸 아니라는 거니..? ㅠㅠ 더 타고 들어가서 equals 함수를 보니 슬슬 답이 보이려고 한다ㅠ 여기서는 왜 다르니..? 힌트는 $HibernateProxy$ if문에서 비교하는 객체들을 살펴보자 찾았다 요놈^^....... UserDetils에서 가져온 Member에 posting 값이 안들어가 있다. 왜? Hibernate.Lazy 블라블라..Exception 즉 지연로딩으로 인한 문제 => 해쉬코드가 같아서 이퀄스 쓰면 될줄알았는데 이퀄스를 타고 들어가보니 프록시..

🚨에러노트 2022.08.27

[22.08.27] SpringBoot Response Serialization error /직렬화 에러

문제상황 Spring 프로젝트 중 게시글 상세조회시 출력값이 null 이 떴다.. 어디서 문제일까 디버깅 responseDto에도 값이 제대로 들어가 있는데 왜 일까..... responseDto 를 보자! ......^^ 불길한 회색 글씨.. 왜 나는 알아채지 못했을까.. 왜 나는 Getter도 안박아주고 시작했는지..? Getter의 중요성 2022.09.01 - [CS 쌓기] - [CS] Serialization & Deserialization 데이터의 직렬화와 역직렬화 =>Json 형태의 직렬화를 진행해주어야 하는데 @Getter의 부재로 직렬화 에러가 일어난 것. 해결방법 Dto에 Getter..꼭..써주기.. 이제야 return new responseDto에도 값이 제대로 들어갔다.. ^^!

🚨에러노트 2022.08.27

[22.08.27] Reason: Failed to create query for method Repository.findAllByOrderByModifiedAtDesc()! No property 'posting' found for type 'Posting';

문제상황 서버 시작에서부터 에러 파티 ^^!!!!!!! 콘솔을 읽어보니 어찌어찌 repository가 문제라는 것 같다 JpaRepository를 상속받은 Repository에서 문제가 일어났단다... No propoerty 'posting' found for type 'Posting' Dto에서 Posting을 가지고 오는데에 문제가 생긴걸까? 응 기본생성자주입안했어..^^! 해결방법 ^^! =>서버구동 완..

🚨에러노트 2022.08.27

[JAVA] 제네릭 Generic

참고 블로그 : 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것 => 특정한 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반 타입. 장점 - 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지 가능 - 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다=> 관리하기 편함 ㅎ - 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다. 사용방법 보통 사용하는 타입명. 암묵적인 규칙일 뿐 다른 걸로 써줘도 무방 클래스 및 인터페이스 선언 public class ClassName { ... } public Interface In..

[JAVA] Map, HashMap

Map? : 키와 값으로 구성된 Entry 객체를 저장하는 구조를 가진 자료구조 : Key 와 Value를 한 쌍으로 갖는 자료형 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다. key와 value는 모두 객체. value는 중복저장 가능하지만 key는 중복 안됨. key value apple 사과 banana 바나나 HashMap put key와 value가 String 형태인 HashMap을 만들고 위에서 보았던 예제의 항목값들을 입력해 보자. import java.util.HashMap; public class Sample { public static void main(String[] args) { HashMap map = new H..

22.08.24 (화) 24일 차

오늘 한 것 Spring 심화 2주차 완강 강의내용 블로그 포스팅 알고리즘 1문제 풀기 개인과제 조금 건들여보기.. 오늘 배운 것 2022.08.23 - [알고리즘/JAVA] - [프로그래머스] 소수 만들기 2022.08.23 - [SPRING] - [SPRING] Spring Security - OAuth2.0 https://github.com/decaf-latte/springweek01-homework 내일 할 것 https://bcp0109.tistory.com/301 : JWT로 회원가입 로그인 구현 ->시도해보기->버전 다르다고...함..ㅎ 개인과제 - 로그인 ( Access Token, Refresh Token ) 개인과제 - 댓글 CRUD 개인과제 - jwt 고민해보기... 알고리즘 1문제 ..

[SPRING] Spring Security - OAuth2.0

: 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준. 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜. OAuth를 사용하는 서비스 제공자는 대표적으로 구글, 페이스북 등이 있습니다. 국내에는 대표적으로 네이버와 카카오가 있죠. : 로그인, 개인정보 관리 책임을 서드파티 애플리케이션 (Google, Facebook, Kakao 등)에게 위임할 수 있다. (단, 사용자가 기존에 서드파티 서비스에 회원가입이 되어있어야 함) 내가 만든 애플리케이션에서 사용자가 Kakao 로그인을 통해 ..

22.08.22 (월) 22일 차

오늘 한 것 채멘 특강 개념 흐름 정리하기 팀과제 질문/답변 + 키워드 질문/답변 Spring 심화 1주차 완강 Spring 심화 2주차 2-12 강의 내용 블로그에 포스팅 오늘 배운 것 1주차) 2022.08.22 - [SPRING] - [SPRING] 의존성 주입 DI , IoC 컨테이너 1주차) 2022.08.22 - [SPRING] - [SPRING] spring framwork의 이해 2주차) 2022.08.23 - [SPRING] - [SPRING] Spring Security - 쿠키 vs 세션 vs JWT + Token 2주차) 2022.08.23 - [SPRING] - [SPRING] Spring Security framework 2주차) 2022.08.23 - [SPRING] - [SP..

[SPRING] Spring Security - API 접근 권한 제어

EX) '일반 사용자'는 관리자 페이지에 접속이 인가되면 안됨! 1. 스프링 시큐리티에 "권한 (Authority)" 설정방법 회원 상세정보 (UserServiceImpl) 를 통해 "권한 (Authority)" 설정 가능 권한을 1개 이상 설정 가능 "권한 이름" 규칙 "ROLE_" 로 시작해야 함 예) "ADMIN" 권한 부여 → "ROLE_ADMIN" 스프링 시큐리티를 이용한 API 별 권한 제어 방법 Controller 에 "@Secured" 어노테이션으로 권한 설정 가능 @Secured("권한 이름") 선언 권한 1개 이상 설정 가능 "@Secured" 어노테이션 활성화 방법 (스프링부트 2.7이상도 동일)

[SPRING]Spring Security - 패스워드 암호화

❗ 회원 등록 시 '비밀번호'는 사용자가 입력한 문자 그대로 DB 에 안 된다!! '정보통신망법, 개인정보보호법' 에 의해 비밀번호는 암호화(Encryption)가 의무!! 회원가입시 Password 입력 -> 비밀번호 (암호화 알고리즘)-> 암호화 => DB에 저장 복호화가 불가능한 일반향 암호 알고리즘 사용 그럼 사용자가 로그인할 때는 암호화된 패스워드를 기억해야 할까? ⇒ 아닙니다. 사용자가 로그인을 위해 "아이디, 패스워드 (평문)" 입력 → 서버에 로그인 요청 서버에서 패스워드 (평문) 을 암호화 평문 → (암호화 알고리즘) → 암호문 DB 에 저장된 "아이디, 패스워드 (암호문)"과 일치 여부 확인 1. 암호화 알고리즘을 빈(Bean)으로 등록 security > WebSecurityConfi..

[SPRING] Spring Security framework

: Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크. 스프링 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어줌! Spring Security는 ' 인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리한다. 더보기 ※ 인증 ? 해당 사용자가 본인이 맞는지를 확인하는 절차 인가 ? 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차 ※ Principal (접근 주체) : 보호받는 Resource에 접근하는 대상 Credential (비밀번호) : Resource에 접근하는 대상의 비밀번호 Filter와 Interceptor는 실행되는 시점이 다름! Filter : Web Application에 등록 // ..

[SPRING] Spring Security - 쿠키 vs 세션 vs JWT + Token

미리 보면 좋은 유튜브 ! https://youtu.be/tosLBcAX1vk ※HTTP 특성 : Stateless / Connectionless = 한번의 요청/응답 시 모든 연결은 끊김. 상태도 종료됨 ❗ 쿠키와 세션 모두 HTTP 에 상태 정보를 유지(Stateful)하기 위해 사용 즉, 쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 됨 ① 쿠키 Cookie - > 시스템을 옮기는 매개체/클라이언트와 서버 사이의 요청/응답에 더해지는 매개체 - > 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일 ② 세션 Session : 로그인 시 쿠키가 세션을 저장해서 계속 로그인된 상태인 것 처럼 보이게 요청/응답을 하는 것 -> 서버에서 일정시간동안 클라이언트 상태를 유..

[SPRING] spring framwork의 이해

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. * 출처 : 스프링 공식 홈페이지 Enterprise applications 개발 편의성 제공 Enterprise applications? 기업용 애플리케이션?? 고객 대상 웹 서비스 ex) 구글, 네이버, 쿠팡 등 스프링은 결국 기업용 애플리케이션의 요구사항 해결에 초점을 맞춘 프레임워크 기업용 애플리케이션 특성 신뢰성이 중요 (ex. 병원에서 수술 시 환자 기록이 바뀐다면?) 서버의 안정성 유지 중요 (ex...