Это хорошая идея для обработки дополнительной аутентификации JWT в фильтре? - PullRequest
0 голосов
/ 11 февраля 2020

Я новичок в Spring Boot, и мой текущий проект - это REST API, разработанный в Spring Webflux. Цель состоит в том, чтобы иметь конечную точку с дополнительным токеном JWT, позволяющим создавать вещи анонимно или нет. Но все руководства для начинающих в Spring Security действительно сложны и, насколько я могу судить, используют Spring MVC.

Теперь моя идея заключалась в создании HandlerFilterFunction, похожем на

class AuthenticationFilter : HandlerFilterFunction<ServerResponse, ServerResponse> {
    override fun filter(request: ServerRequest, next: HandlerFunction<ServerResponse>): Mono<ServerResponse> {
        val authHeader = request.headers().header("Authorization").firstOrNull()
        // get user from database
        request.attributes()["user"] = user
        return next.handle(request)
    }
}

и добавление его в компонент router {...}.

Это хорошая идея, или мне go другой маршрутизатор? Если это так, может кто-нибудь указать мне на учебник JWT для Spring Webflux.

1 Ответ

0 голосов
/ 11 февраля 2020

Документы Spring Security указывают на образец сервера ресурсов WebFlux на основе JWT в кодовой базе.

Это не Kotlin, поэтому я также опубликовал образец моего только сейчас; надеюсь, это поможет вам начать работу.

Что касается вашего вопроса, да, вы можете создать свой собственный фильтр, хотя Spring Security поставляется с BearerTokenAuthenticationFilter, который уже делает то, что, скорее всего, будет делать ваш фильтр. Первый связанный образец добавляет этот фильтр вручную, а второй пример позволяет Spring Boot добавить его.

...