#JPA Query Method
Repository에
// findBy까지는 규칙, Usernanme은 문법
// select * from user where username = ? 사실상 sql로 이 코드가 실행되는 것
public User findByUsername(String username);
#메소드 시큐리티
@EnableGlobalMethodSecurity
@EnableGlobalMethodSecurity(jsr250Enabled = true, prePostEnabled = true, securedEnabled = true)
- @Secured 와 @RollAllowed
메소드 호출 이전에 권한을 확인한다.
스프링 EL을 사용하지 못한다.
- @PreAuthorize 와 @PostAuthorize
메소드 호출 이전 이후에 권한을 확인할 수 있다.
스프링 EL을 사용하여 메소드 매개변수와 리턴값을 검증할 수 있다.
1. 먼저 MethodSecurity 를 사용하기 위해 config 패키지에 클래스를 아래와 같이 생성하고 선언한다.
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, jsr250Enabled = true)
public class MethodSecurity {
}
securedEnabled = true 로 설정하면 @Secured 어노테이션 사용 가능
2. 사용하고자하는 메소드 위에 @Secured 라는 어노테이션으로 설정해준다.
출처 : https://catchdream.tistory.com/205
#CSRF(Cross-Site Request Forgery)
안녕하세요, 이번에 정리할 내용은 CSRF(Cross-Site Request Forgery) 입니다!
스프링 시큐리티의 어노테이션인 @EnableWebSecurity 어노테이션은 기본적으로 CSRF 공격을 방지하는 기능을 지원하고 있습니다.
CSRF란 웹 애플리케이션의 취약점 중 하나로, 이용자가 의도하지 않은 요청을 통한 공격을 의미합니다.
즉 CSRF 공격이란, 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(등록, 수정, 삭제 등)를 특정 웹사이트에 요청하도록 만드는 공격 입니다.
출처 : https://zzang9ha.tistory.com/341
#Optional 이란?
[ Optional이란? ]
Java8에서는 Optional<T> 클래스를 사용해 NPE를 방지할 수 있도록 도와준다. Optional<T>는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 값이 null이더라도 바로 NPE가 발생하지 않으며, 클래스이기 때문에 각종 메소드를 제공해준다.
출처: https://mangkyu.tistory.com/70 [MangKyu's Diary:티스토리]
#Optional 바르게 쓰기
참고 : https://homoefficio.github.io/2019/10/03/Java-Optional-%EB%B0%94%EB%A5%B4%EA%B2%8C-%EC%93%B0%EA%B8%B0/
#Model 객체란?
참고 : https://velog.io/@msriver/Spring-Model-%EA%B0%9D%EC%B2%B4
#왜 계속 ID를 username 이라고 하는가?
스프링 시큐리티에서 우리에게 익숙한 ID를 username이라고 하기 때문.
'TIL' 카테고리의 다른 글
220606 TIL (0) | 2022.06.06 |
---|---|
220531 TIL (0) | 2022.05.31 |
220529 TIL (0) | 2022.05.29 |
220525 TIL (0) | 2022.05.26 |
220523 분노의 TIL (0) | 2022.05.24 |