Весенняя загрузка webflux только возвращая 401 и 403 - PullRequest
0 голосов
/ 24 октября 2019

У меня есть spring-boot project, в котором было apache tomcat, но после прочтения о преимуществах реактивного программирования я решил переключиться на Reactor Netty и WebFlux. Я следовал этому учебнику и сумел заставить его работать, к сожалению, каждый запрос теперь возвращает 401 и 403. После поиска в Google я обнаружил, что мне нужно поменять Websecurity settings. Мне нужно было набрать csrf, как http.csrf().disable(), и я сделал

@EnableWebFluxSecurity
public class WebFluxSecurityConfig {

@Bean
public SecurityWebFilterChain springSecurityFilterChain(
        ServerHttpSecurity http) {
    http.csrf().disable()
            .authorizeExchange()
            .pathMatchers("/**").permitAll()
            .and()
            .httpBasic();
    return http.build();
 }
}

Когда я пытаюсь вызвать endpoint из моего TestController, он по-прежнему возвращает 403 и 401.

@RestController
@RequestMapping("/test")
public class TestController {

@RequestMapping(value = "/testmethod", method = RequestMethod.GET)
public Mono<ServerResponse> test() {
    LOGGER.debug("test() method invoked");
    return ServerResponse.status(HttpStatus.OK).body(fromObject("Call received!")).log();
}
}

Ниже приведено сообщение, которое я получаю в своем журнале

    17:02:17.961 [reactor-http-epoll-3] DEBUG org.springframework.web.server.adapter.HttpWebHandlerAdapter - [c9c29225] HTTP GET "/mytestapp/user/test"
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - httpRequestMediaTypes=[*/*]
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - Processing */*
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - Ignoring
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - Did not match any media types
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - httpRequestMediaTypes=[*/*]
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - Processing */*
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - Ignoring
    17:02:17.992 [reactor-http-epoll-3] DEBUG org.springframework.security.web.server.util.matcher.MediaTypeServerWebExchangeMatcher - Did not match any media types
    17:02:17.993 [reactor-http-epoll-3] DEBUG org.springframework.web.server.adapter.HttpWebHandlerAdapter - [c9c29225] Completed 401 UNAUTHORIZED

И если я позвоню моей конечной точке регистрации пользователя

    @RequestMapping(value = "/registration/user", method = RequestMethod.POST)
    @ResponseBody
    public Mono<ServerResponse> registerUserAccount(@RequestBody UserDto userDto) {
        final Mono<User> registeredUser = userService.registerNewUserAccount(passengerDto);
        return registeredUser.flatMap(user -> ServerResponse.status(HttpStatus.OK).build())
                .switchIfEmpty(Mono.defer(() -> ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR).build()));
    }

Но даже эта возвращает

        17:07:02.849 [reactor-http-epoll-3] DEBUG org.springframework.web.server.adapter.HttpWebHandlerAdapter - [c9c29225] HTTP POST "/mytesyapp/user/registration/passenger"
        17:07:02.852 [reactor-http-epoll-3] DEBUG org.springframework.web.server.adapter.HttpWebHandlerAdapter - [c9c29225] Completed 403 FORBIDDEN

Кто-нибудь знает, как я могу это исправить?

1 Ответ

0 голосов
/ 24 октября 2019

Поскольку я не ошибаюсь, вы включили защиту, и если это проект с пружинной загрузкой, то он ищет объект аутентификации. Попробуйте получить доступ к URL-адресу службы в браузере, если он запрашивает имя пользователя / пароль, затем вы должны предоставить его для доступа к службе.

Опция здесь заключается в том, чтобы указать имя пользователя / пароль из того места, где вы к нему обращаетесь (например - почтальон)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...