Gradle dependency 추가
implementation("org.springframework.boot:spring-boot-starter-aop")
AOP를 활성하는 어노테이션 추가 Application 클래스에 추가해준다
@EnableAspectJAutoProxy
@SpringBootApplication(exclude = [SecurityAutoConfiguration::class])
class Application
fun main(args: Array<String>) {
runApplication<Application>(*args)
}
AOP를 처리하기 위한 어노테이션
import java.lang.annotation.ElementType
import java.lang.annotation.RetentionPolicy
@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
annotation class Auth
공통 로직 Aspect
@Aspect
@Component
class AuthAspect(private val memberService: MemberService,
private val httpServletRequest: HttpServletRequest){
@Around("@annotation(Auth)")
@Throws(Throwable::class)
fun accessToken(joinPoint: ProceedingJoinPoint):Any{
val accessToken = httpServletRequest.getHeader(AUTHORIZATION_HEADER)
val token = accessToken.substring(BEARER_PREFIX.length)
memberService.checkToken(token) //토큰 검증 service를 따로 구현 해야함
var proceed = joinPoint.proceed()
return proceed
}
companion object {
const val AUTHORIZATION_HEADER = "Authorization"
const val BEARER_PREFIX = "Bearer "
}
}
API에 적용하기
AOP를 적용할 API에 만든 @Auth 어노테이션을 추가해준다
반응형
'Kotlin' 카테고리의 다른 글
Spring Boot REST API Key 만들어서 적용하기 (0) | 2022.11.15 |
---|---|
[Spring Boot] Interceptor로 토큰 검증 적용 (0) | 2022.11.10 |
[Kotlin]CrossOrigin Annotation 여러 origin 사용 (0) | 2022.10.31 |
QueryDSL 결과 값이 Null인 경우 다른 값으로 할당 (0) | 2022.10.28 |
[Spring Boot] RestTmplate로 외부 API 통신하기: GET (0) | 2022.10.26 |
댓글