Spring12 Spring Security-JWT 사용시 https://velog.io/@slolee/Spring-Security-%EA%B7%B8%EB%A0%87%EA%B2%8C-%EC%93%B0%EC%A7%80-%EB%A7%88%EC%84%B8%EC%9A%94 일단 위에 블로그를 읽어보면 OncePerRequestFilter 랑 AbstractAuthenticationProcessingFilter 에 대해 나왔는데 밑이 부분 글을 읽고 무슨 말이고, 이해 하고 나서 그럼 둘중 머 사용해야하나 생각이 들었다 " OncePerRequestFilter 를 통해 JWT 인증을 구현했으면 Spring Security 를 의존하지 말아야 하는데 정작 그건 또 아니다. 정작 이런식으로 개발하는 개발자들은 대부분 본인이 Spring Security 를 사용하는줄 알고.. 2024. 11. 11. CORS 와 PreFlight CORS => Cros Orgin Resource Sharing (교차출저 리소스 공유) 2009년에 Html5 표준으로 채택된 프로토콜이며,SOP에 의해 제한된 교차 출저 간 리소스 공유를 허용하기 위한 방법. 그러기 위해서는 위 사진 예시로 구글서버 cors헤더설정 코드에서 네이버를 추가해줘야한다.SOP => Same Origin Policy (동일 출저 정책) 현재 출저와 동일한 출저의 리소스만 접근할 수 있도록 하는 정책동일 출저란 도메인,프로토콜,포트번호 모두 동일해야한다. 이렇게 하나라도 다른경우 동일 출저 정책에 의해리소스 접근이 제한된다. * SOP가 없을 경우 가능한 보안 취약점은 무엇일까?사용자 인증 정보에 해당하는 세션 ID같은 정보들이 쿠키에 포함되어 있을 수 있기 때문에, 이 세.. 2024. 10. 11. @QueryHint 와 @Transaction readOnly 차이 / 비공개 * @QueryHint JPA Hint인 @QueryHint는 스냅샷을 사용하지 않으면서 당연히 스냅샷 사용안하니 더티체킹도 안한다. * @Transaction readonly @Transaction readonly는 flush를 안한다는거다. 그리고 현재 스프링 최신버전에서는 스냅샷 사용 안하니 그러므로 더티체킹을 안한다. (알아보니 옛날 버전은 스냅샵은 이용 한다는듯?) 따라서 이 두개는 읽기 전용에서는 성능 최적화를 얻을 수 있다. 근데 이 두개가 비슷해서 차이가 있나 알아봤는데 차이 없고 스프링 5.1버전 이후 @Transaction(readOnly=true)로 설정하면, @QueryHint의 readOnly까지 모두 동작 한다! 추가로 엔티티 조회가 아닌 바로 DTO로 조회할 때는 스냅샷이 안만.. 2024. 4. 8. Spring_5주차-(2) 1. 소셜 로그인 OAuth이란 * 모든 웹사이트에서 일일이 그 사이트만의 회원 가입 거치는거는 귀찮아서 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준. * OAuth를 사용하는 서비스 제공자는 국내에서는 보통 네이버,카카오톡이 있다. 카카오 OAuth 사용방법 => 카카오 developers 공식 문서 2. 시작전 kakao developers 설정 (1) 앱설정- 플랫폼의 web플랫폼 등록 누르고 도메인 설정해준다. (2) 카카오 로그인-Redirect Url 등록 하고 활성화 on 해준다 (3) 동의 항목에서 닉네임은 필수 ,카카오계정(이메일)은 선택으로 하고 둘다 목적을 회원가입으로 한다... 2023. 12. 4. Spring_5주차-(1) 테스트 1. Before - After * 각각의 기능 설명은 프린트 문에 적힌거다. 2. @DisplayName, @Nested , @TestMethodOrder * @DisplayName은 테스트의 내용을 한눈에 알아볼 수 있게 네이밍 해줄 수 있다. * 지금은 메소드 한개만 실행해서 잘 모르나 클래스 자체나 메소드 여러개 실행시 구별하기 쉽도록 하기 위해 @DisplayName 사용한다. * @Nested는 주제별로 테스트를 그룹지어서 파악하기 좋게 하려고 한다.(그냥 일반 클래스랑 같은듯) * 테스트 메소드 수행 순서를 정할때는 @TestMethodOrder(MethodOrderer.OrderAnnotation.class) 어노테이션 설정 해야한다. * 설정하고 각 메소드에 @Order(값) 순서.. 2023. 11. 28. Spring_4주차-(2) 1. 지연 로딩 * JPA는 연관관계가 설정된 Entity의 정보를 바로 가져올지, 필요할 때 가져올지 정할 수 있다. * 이 가져오는 방법을 JPA에서는 Fetch Type 이라하고 2가지가 있는데 - LAZY는 지연 로딩으로 필요한 시점에 정보를 가져온다. - EAGER는 즉시 로딩으로 즉시 가져온다. * Entity 연관관계 어노테이션들인 @OneToMany,@ManyToOne들은 default로 지연인지,즉시인지 기본값이 있는데 여기에서 TO 뒤에 오는 부분 One 이면 즉시 로딩 , Many면 지연 로딩 이렇게 보면 된다. *보통 to뒤에 many인것들은 해당 필드가 리스트 형식이라 정보가 여러개 들어있을수도 있으니 지연 로딩이다. 반대로 one이면 해당 정보가 한개뿐이니 즉시 가져와도 무리가 .. 2023. 11. 14. Spring_4주차-(1) 1. RestTemplate *서버간 통신을 할때 사용하고 RestTemplate은 스프링에서 HTTP통신 기능을 손쉽게 사용하도록 설계된 템플릿이다. * RestTemplate 은 Restful원칙을 따르고 동기 방식으로 처리하며 JSON,XML,문자열등으로 주고 받으며 통신한다. RestTemplate 메소드 종류 RestTemplate 사용해보기 1) 일단 작업은 서비스에서 할거니 서비스 안에 RestTemplate 필드를 만들어주고 생성자 형식으로 주입을 해준다. build()함수 구현쪽 가보면 new RestTemplate 리턴해준다. 2) RestTemplate으로 요청을 보낼 때 Header에 특정 정보를 같이 전달 하고 싶으면 exchange() 메소드의 예시인데 URI 클래스를 이용해서 .. 2023. 11. 10. Spring_3주차-(1) 1. Bean을 수동으로 등록 * Bean을 자동말고 수동으로 등록은 언제 사용되나? -> 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록하는 것이 좋다. * 수동등록된 Bean에서 문제가 발생했을 때 해당 위치를 파악하기 쉽다는 장점이 있다. * 사용방법 예시를 보면 - config 패키지 생성후 PasswordConfig 클래스 생성 - bean으로 등록하고자하는 객체를 반환하는 메소드를 선언하고 메소드 위에 @Bean 설정 - bean을 등록하는 메소드가 속한 해당 클래스에 @Configuration을 설정 - 이러면 Spring 서버가 뜰 때 Spring IoC 컨테이너에 'Bean'으로 저장된다.↓ (PasswordEncoder passwordEncoder = pas.. 2023. 11. 7. Spring_2주차-(2) 1. 영속성 컨텍스트 * Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간이다. * 오른쪽 캡처를 보면 개발자들은 EntityManager를 사용해서 Entity를 저장하고 조회하고 수정하고 삭제할 수 있다. * EntityManager는 EntityManagerFactory를 통해 생성하여 사용할 수 있는데 EntityManagerFactory를 만들기 위해서는 DB에 대한 정보를 전달해야한다. * 정보를 전달하기 위해서는 /resources/META-INF/ 위치에 persistence.xml 파일을 만들어 정보를 넣어두면된다. (아래 예시는 스프링환경이 아니고 자바환경에서 하는중) * 코드에 화살표 부분에 이름은 보통 프로젝트나 클래스 명으로 하는게 좋긴하다. * 이제 실행 코드 부분.. 2023. 11. 2. 이전 1 2 다음