Notice
Recent Posts
Recent Comments
Link
반응형
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 코틀린
- postgis
- PostgreSQL
- ktlin
- 본인확인
- 공동인증서
- 본인인증
- 인증
- AWS
- NGINX
- 딥시크
- 허깅 페이스
- webflux
- db
- Kotlin
- docker
- Spring
- deepseek vs chatgpt
- 로그인
- IntelliJ
- Flux
- spring security
- 보안
- AOP
- netty
- API
- Mono
- 컨퍼런스
- exception
- Spring Boot
Archives
- Today
- Total
[수미수의 개발 브로구]
[WebFlux] WebFlux Server Request 에 Custom Header 추가하기 본문
Language & Framework/WebFlux
[WebFlux] WebFlux Server Request 에 Custom Header 추가하기
수미수 2023. 9. 15. 23:06반응형
WebFlux 를 사용하면서, 특정 비지니스로직에 의하거나 또는 다른 목적에 의해 요청된 Request 의 Http Header 에 Custom Header 를 추가해야 하는일일 발생 했다.
아래 소스는 요청된 Request 값에 토큰의 값에서 추출한 고객 정보를 Request 의 Http Header 중 X_CHANNEL_CUSTOMER_ID Key에 설정 하는 예제 소스이다.
해당 로직을 통해서, ServerExchange 객체를 사용 할 수 있으면, 임의로 설정한 X_CHANNEL_CUSTOMER_ID 헤더 값을 가져 올 수 있게 된다.
@Configuration
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
@Order(3)
class ReactiveRequestContextFilter(private val tracer: Tracer) : WebFilter {
/**
* WebFilter
*/
override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
val headers = exchange.request.headers
val traceId = traceIdAndSpanId.first
val spanId = traceIdAndSpanId.second
var mutateServerWebExchange: ServerWebExchange = exchange
// Spring Security 를 통해서 토큰 값의 정보를 추출 한다.
return ReactiveSecurityContextHolder.getContext()
.map {
ClientUtil.getCustomerIdFromToken(it)
}.doOnNext {
// custId 나온 값을 custom Header 로 생성하여 셋팅 한다.
val customerId = it
val mutateRequest: ServerHttpRequest = exchange.request.mutate()
.header(X_CHANNEL_CUSTOMER_ID, customerId)
.build()
// serverWebExchange 객체를 신규로 생성 한다.
mutateServerWebExchange = exchange.mutate().request(mutateRequest).build()
}
.then(chain.filter(mutateServerWebExchange))
}
}
반응형
'Language & Framework > WebFlux' 카테고리의 다른 글
| [WebFlux] WebFlux Custom Exception 생성하기 (1) | 2023.09.26 |
|---|---|
| [WebFlux] WebFlux Exception 처리 (0) | 2023.09.21 |
| [WebFlux] Spring WebFlux API 서버 만들기 (0) | 2023.08.27 |
| [WebFlux] WebFlux AOP 사용하기 (1) | 2023.08.21 |
| [WebFlux] WebClient Connection Reset By Peer 오류 발생 (0) | 2023.08.18 |