У меня есть 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
Кто-нибудь знает, как я могу это исправить?