Spring 65

로그인 인증 생각

세션방식의 문제1. 서버마다 세션이 각각 있어서 다른 서버로 연결됐을 경우 인증에 문제가 생김2. ajax같은 js로 서버에 요청하는데, 이때 동일 도메인에서 오는 요청에만 작동함 . 즉 쿠키가 서버로 못감대부분 서버들은 http only라고해서 쿠키를 건들일 수 없게만들어놓는다.js에서  fetch() 할때 headers영역에 쿠키를 담아서 요청할 수 있는데 이런식으로 오는 요청은 서버에서 다 거부함http only를 false로 하면 오긴오는데, 이러면 보안적으로 안좋아서 하면 안됨 그래서headers에  Authorization 이라는 키값에 인증정보를 넣는 방법이있음 (ID,PW)이게 http basic방식인데 ,  매번 요청할때마다 id pw를 담음 이러면 확장성은 좋은데 문제는id, pw 가 ..

Spring 2024.09.12

인터셉터 vs 필터 vs AOP

스프링 부트에서 서버 전체의 요청 수를 제한하기 위한 세 가지 접근 방식인 인터셉터(Interceptors), 필터(Filters), 그리고 AOP(Aspect-Oriented Programming)의 사용은 각기 다른 장점과 적용 시나리오를 가지고 있습니다. 이들을 비교하여 어떤 상황에서 각각이 유리한지 알아보겠습니다.1. 인터셉터 (Interceptors)장점:인터셉터는 스프링 MVC의 일부로서, 컨트롤러가 요청을 처리하기 전후로 로직을 삽입하는 데 적합합니다.요청과 응답을 조작하는데 필요한 메소드(preHandle, postHandle, afterCompletion)를 제공합니다.스프링의 WebMvcConfigurer를 구현하여 쉽게 구성할 수 있으며, 스프링의 DispatcherServlet이 처..

Spring 2024.07.31

intellij에 spring, maven 환경구성하기

새프로젝트 클릭 -> Maven 원형선택 -> archetype을 webapp으로 설정  -> 프로젝트 생성pom.xml 설정하고 webapp/WEB-INF/ 에root-context.xmlservlet-context.xmlweb.xml 생성하고 설정함. main 폴더에서 오른쪽클릭  폴더생성에서- >java ,resources 선택  java폴더에서 패키지생성클릭 -> 설정파일에 맞는 패키지명 입력 -> 컨트롤러생성  @톰캣추가하기(인텔리제이 커뮤니티버전)메뉴 -> settings(preferences)-> 플러그인-> 마켓플레이스-> tomcat검색 ->smart Tomcat설치  실행환경구성-> 새항목추가 ->smart tomcat선택- tomcat server에 톰캣설치 폴더선택(톰캣폴더를 한번 ..

Spring 2024.04.25

Spring Security) user_code에 따른 권한 설정

이렇게 작성만 해놓고 딴 곳에서 메서드 사용을 안하고 있는데 , 자동으로 db의 user_code가1일 땐 ROLE ADMIN이라고 인식이 되고 , 0 일땐 ROLE_USER라고 인식이 됨 getAuthorities() 메서드에서 반환하는 Collection는 Spring Security 내부에서 자동으로 사용됩니다. 이 메서드는 UserDetails 인터페이스의 일부이며, Spring Security가 인증된 사용자의 권한을 확인할 때 내부적으로 호출합니다. getAuthorities() 메서드가 반환하는 권한(GrantedAuthority 객체들)은 다음과 같은 상황에서 사용됩니다: HTTP 요청에 대한 접근 제어: HttpSecurity 설정에서 정의한 antMatchers 또는 기타 방법을 통해 ..

Spring 2023.11.20

IntelliJ에서 한글 깨짐 현상(인코딩 설정)

Ctrl+ Alt + S 하셔서 settings 창 키신 다음 encoding 검색해주세요. global encoding -> utf-8로 설정 project encoding -> utf-8로 설정 default encoding for properties files -> utf-8로 설정 Transparent native-to-ascii conversion에 체크 Help → edit custom VM options 들어가셔서 아래 코드 두줄 추가해주시고 -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 캐시무효화 IntelliJ 다시 껐다가 켜주세요

Spring 2023.11.14

엔티티 상속 @Inheritance @DiscriminatorColumn

이 코드는 JPA(Java Persistence API)를 사용하여 데이터베이스 테이블 상속을 구현하고 있습니다. @Inheritance와 @DiscriminatorColumn 어노테이션은 상속 관계에 있는 엔티티들을 데이터베이스에 어떻게 매핑할지 정의합니다. @Inheritance(strategy = InheritanceType.SINGLE_TABLE): @Inheritance 어노테이션은 엔티티 상속 전략을 지정하는 데 사용됩니다. InheritanceType.SINGLE_TABLE 전략은 모든 상속받는 클래스들이 하나의 테이블에 매핑되는 것을 의미합니다. 즉, 부모 클래스 Authentication과 모든 자식 클래스들의 데이터가 단일 데이터베이스 테이블에 저장됩니다. 예를 들어, BasicAuth..

Spring 2023.11.09

AOP- Security check

@Target(ElementType.METHOD): @Target 메타 어노테이션은 정의된 어노테이션(@SecurityCheck)이 적용될 수 있는 Java 요소를 지정합니다. 여기서 ElementType.METHOD는 이 어노테이션이 메소드 선언에만 사용될 수 있음을 의미합니다. 다른 ElementType으로는 클래스, 필드, 매개변수 등이 있습니다. @Retention(RetentionPolicy.RUNTIME): @Retention 메타 어노테이션은 어노테이션 정보가 어느 시점까지 유지될 것인지를 명시합니다. RetentionPolicy.RUNTIME은 어노테이션 정보가 런타임에도 유지되어야 함을 나타내며, 이는 리플렉션을 통해 해당 정보를 런타임에서도 접근할 수 있음을 의미합니다. 다른 정책으로는..

Spring 2023.11.09

FETCH JOIN시 id가 조회안된다는 에러

JOIN FETCH 로 했더니 detailImage가 하나도 없는경우 조회가 안되더라. 당연히 조인이안될테니까.. LEFT JOIN으로 해야한다. JOIN FETCH는 JPA에서 연관된 엔터티를 가져오기 위해 사용되는 Eager Fetching 방법 중 하나입니다. 여기에서는 Product와 그에 연관된 detailImages를 한 번의 쿼리로 함께 가져오려고 합니다. 문제는, JOIN FETCH를 사용할 때 연관된 엔터티가 없는 경우 결과를 반환하지 않을 수 있다는 것입니다. 즉, detailImages가 없는 Product를 조회할 때 해당 Product가 반환되지 않을 수 있습니다. 이 문제를 해결하려면 LEFT JOIN FETCH를 사용하는 것이 좋습니다. LEFT JOIN FETCH는 연관된 엔..

Spring 2023.09.15