230626-230702 WIL

보트·2023년 7월 2일
0

Spring

목록 보기
11/27

Entity 관계

: Entity에서 외래 키의 주인은 일반적으로 N(다)의 위치에 있는 Entity
: 외래 키의 주인
-> @JoinColumn(컬럼명, null, unique,, 지정) 사용
-> 외래 키를 등록, 수정, 삭제할 수 있음
: 외래 키의 주인x
-> 외래 키 읽기만 가능
-> 양방향일 때 mappedBy = "필드명" 옵션 사용
(외래 키의 주인 쪽에서 @JoinColumn()으로 설정된 필드명)
-> 양방향일 때 1:N 관계에서는 1의 위치에 있는 Entity에서 ArrayList로 확인 가능, DB에 저장 X

N:M

: @ManyToMany
: 자동 생성되는 중간 테이블은 컨트롤하기 어렵기 때문에 직접 중간 테이블을 생성해서 관리
: 중간 테이블 -> 외래 키의 주인

지연 로딩

: JPA 에서 연관 관계가 설정된 Entity의 정보를 가져올 때 사용하는 옵션
: Fetch Type -> EAGER, LAZY
: EAGER : 조회할 때 연관된 모든 Entity의 정보를 즉시 가져옴 (@ManyToOne 기본 설정)
: LAZY : 필요한 시점에 연관된 Entity의 정보를 가져옴 (@OneToMany 기본 설정)
: @Transactional 필요

Spring Security

권한 설정

선언적 방식

  • URL 단위
.requestMatchers("/api/auth/**").permitAll() 
.requestMatchers("/api/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
  • Method 단위
@PreAuthorize("hasRole('USER')")
public void user() {~}

authenticated()
: 인증된 사용자의 접근을 허용
fullyAuthenticated()
: 인증된 사용자의 접근을 허용
rememberMe
: 인증 제외
permitAll()
: 무조건 접근을 허용
denyAll()
: 무조건 접근을 허용하지 않음
anonymous()
: 익명사용자의 접근을 허용
rememberMe()
: 기억하기를 통해 인증된 사용자의 접근을 허용
access(String)
: 주어진 SpEL 표현식의 평가 결과가 true이면 접근을 허용
hasRole(String)
: 사용자가 주어진 역할이 있다면 접근을 허용
hasAuthority(String)
: 사용자가 주어진 권한이 있다면
hasAnyRole(String...)
: 사용자가 주어진 권한이 있다면 접근을 허용
hasAnyAuthority(String...)
: 사용자가 주어진 권한 중 어떤 것이라도 있다면 접근을 허용
hasIpAddress(String)
: 주어진 IP로부터 요청이 왔다면 접근을 허용

hasRole("USER") , hasAuthority("ROLE_USER") 처럼 사용법이 다름

(참고 : https://velog.io/@dailylifecoding/spring-security-authorize-api-basic)

profile
일주일에 한 번

0개의 댓글