728x90
@PreFilter
- @PreFilter 어노테이션은 메소드가 실행되기 전에 메소드에 전달된 컬렉션 타입의 파라미터에 대한 필터링을 수행하는데 사용
- @PreFilter 어노테이션은 주로 사용자가 보내온 컬렉션(배열, 리스트, 맵, 스트림) 내의 객체들을 특정 기준에 따라 필터링하고 그 중 보안 조건을 만족하는 객체들에 대해서만 메소드가 처리하도록 할 때 사용
@PreFilter("filterObject.owner == authentication.name")
public Collection<BankAccount> updateAccounts(BankAccount[] data){
return data;
}
@PreFilter("filterObject.owner == authentication.name")
public Collection<BankAccount> updateAccounts(Collection<BankAccount> data){
return data;
}
@PreFilter("filterObject.value.owner == authentication.name")
public Collection<BankAccount> updateAccounts(Map<String, BankAccount> data){
return data;
}
@PreFilter("filterObject.owner == authentication.name")
public Collection<BankAccount> updateAccounts(Stream<BankAccount> data){
return data;
}
@PostFilter
- @PostFilter 어노테이션은 메소드가 반환하는 컬렉션 타입의 결과에 대해 필터링을 수행하는 데 사용
- @PostFilter 어노테이션은 메소드가 컬렉션을 반환할 때 반환되는 각 객체가 특정 보안 조건을 충족하는지 확인하고 조건을 만족하지 않는 객체들을 결과에서 제거
@PostFilter("filterObject.owner == authentication.name")
public List<BankAccount> readAccounts1(){
return dataService.readList();
}
@PostFilter("filterObject.value.owner == authentication.name")
public Map<String, BankAccount> readAccounts2(){
return dataService.readMap();
}
정리
- @PreFilter는 입력받은 컬렉션을 검증하여 보안 조건을 만족하는 데이터만 반환
- @PostFilter는 반환할 컬렉션에서 보안 조건을 만족하지 않는 객체들을 제거 후 반환
728x90
'Language > Spring Security' 카테고리의 다른 글
정적 자원 관리 (0) | 2024.07.31 |
---|---|
메서드 기반 권한 부여 - @Secured, JSR-250 및 부가 기능 (0) | 2024.07.31 |
메서드 기반 권한 부여 - @PreAuthorize, @PostAuthorize (0) | 2024.07.31 |
요청 기반 권한 부여 - HttpSecurity.securityMatcher() (0) | 2024.07.31 |
표현식 및 커스텀 권한 구현 (0) | 2024.07.31 |