Open eunja511005 opened 1 year ago
package com.eun.tutorial.aspect.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface CreatePermission { // 어노테이션의 추가적인 속성 정의 가능 }
- Aspect 클래스 작성
- 적용
@Override
@CreatePermission
public int saveMenu(MenuDTO menuDTO) {
return menuMapper.insertMenu(menuDTO);
}
@Override
@CheckAuthorization
public int updateMenu(MenuDTO menuDTO) {
return menuMapper.updateMenu(menuDTO);
}
@Override
@CheckAuthorization
public int deleteMenu(String id) {
return menuMapper.deleteMenu(id);
}
GlobalExceptionHandler 처리 시 오류 원인이 CustomException 이면서 403 오류 일 경우 처리 추가
if (ex.getCause() instanceof CustomException) {
// CustomException 클래스의 인스턴스인 경우 처리 로직
CustomException customEx = (CustomException) ex.getCause();
int errorCode = customEx.getErrorCode();
if(errorCode==403) {
ErrorResponse response = new ErrorResponse(ErrorCode.NO_AUTHORIZATION);
return new ResponseEntity<>(response, HttpStatus.FORBIDDEN);
}
}
if(method.getName().startsWith("delete")) {
log.info("##### deleteUDAutorization : "+method+", "+loginId+", "+resourceId);
accessControlMapper.deleteByResourceIdUserId(resourceId, loginId);
}
코드 자동 생성 시 ACL 테이블에 추가, 업데이트/삭제 시 권한체크 추가
Open Forum 메뉴에 대해서도 권한 제어 생성 및 체크 되도록 수정