mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-25 13:32:30 +00:00
Demo mock support with RouterFunction
This commit is contained in:
parent
a79a81cd24
commit
bc141febdb
@ -69,7 +69,7 @@ public class HttpSecurity {
|
||||
return this;
|
||||
}
|
||||
|
||||
public WebFilter build() {
|
||||
public WebFilterChainFilter build() {
|
||||
List<WebFilter> filters = new ArrayList<>();
|
||||
if(headers != null) {
|
||||
filters.add(headers.build());
|
||||
|
@ -26,8 +26,8 @@ import org.springframework.security.config.web.server.HttpSecurity;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.web.server.WebFilterChainFilter;
|
||||
import org.springframework.security.web.server.authorization.AuthorizationContext;
|
||||
import org.springframework.web.server.WebFilter;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
/**
|
||||
@ -38,7 +38,7 @@ import reactor.core.publisher.Mono;
|
||||
public class SecurityConfig {
|
||||
|
||||
@Bean
|
||||
WebFilter springSecurityFilterChain(HttpSecurity http) throws Exception {
|
||||
WebFilterChainFilter springSecurityFilterChain(HttpSecurity http) throws Exception {
|
||||
http.authorizeExchange()
|
||||
.antMatchers("/admin/**").hasRole("ADMIN")
|
||||
.antMatchers("/users/{user}/**").access(this::currentUserMatchesPath)
|
||||
|
@ -58,15 +58,18 @@ public class HelloWebfluxFnApplication {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public HttpHandler httpHandler(UserController userController, WebFilter springSecurityFilterChain) {
|
||||
RouterFunction<ServerResponse> route = route(
|
||||
GET("/principal"), userController::principal).andRoute(
|
||||
GET("/admin"), userController::admin);
|
||||
|
||||
public RouterFunction<ServerResponse> routes(UserController userController) {
|
||||
return route(
|
||||
GET("/principal"), userController::principal).andRoute(
|
||||
GET("/admin"), userController::admin);
|
||||
}
|
||||
@Bean
|
||||
public HttpHandler httpHandler(RouterFunction<ServerResponse> routes, WebFilter springSecurityFilterChain) {
|
||||
HandlerStrategies handlerStrategies = HandlerStrategies.builder()
|
||||
.webFilter(springSecurityFilterChain).build();
|
||||
.webFilter(springSecurityFilterChain)
|
||||
.build();
|
||||
|
||||
return RouterFunctions.toHttpHandler(route, handlerStrategies);
|
||||
return RouterFunctions.toHttpHandler(routes, handlerStrategies);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,8 +26,8 @@ import org.springframework.security.config.web.server.HttpSecurity;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.web.server.WebFilterChainFilter;
|
||||
import org.springframework.security.web.server.authorization.AuthorizationContext;
|
||||
import org.springframework.web.server.WebFilter;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
/**
|
||||
@ -38,7 +38,7 @@ import reactor.core.publisher.Mono;
|
||||
public class SecurityConfig {
|
||||
|
||||
@Bean
|
||||
WebFilter springSecurityFilterChain(HttpSecurity http) throws Exception {
|
||||
WebFilterChainFilter springSecurityFilterChain(HttpSecurity http) throws Exception {
|
||||
http.authorizeExchange()
|
||||
.antMatchers("/admin/**").hasRole("ADMIN")
|
||||
.antMatchers("/users/{user}/**").access(this::currentUserMatchesPath)
|
||||
|
@ -18,14 +18,13 @@
|
||||
package sample;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseCookie;
|
||||
import org.springframework.http.server.reactive.HttpHandler;
|
||||
import org.springframework.security.web.server.WebFilterChainFilter;
|
||||
import org.springframework.security.web.server.header.ContentTypeOptionsHttpHeadersWriter;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
@ -33,6 +32,7 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.web.reactive.server.ExchangeResult;
|
||||
import org.springframework.test.web.reactive.server.WebTestClient;
|
||||
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
|
||||
import org.springframework.web.reactive.function.server.RouterFunction;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Base64;
|
||||
@ -49,16 +49,20 @@ import static org.springframework.web.reactive.function.client.ExchangeFilterFun
|
||||
@ActiveProfiles("test")
|
||||
public class HelloWebfluxFnApplicationTests {
|
||||
@Autowired
|
||||
HttpHandler handler;
|
||||
RouterFunction<?> routerFunction;
|
||||
@Autowired
|
||||
WebFilterChainFilter springSecurityFilterChain;
|
||||
|
||||
WebTestClient rest;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
this.rest = WebTestClient.bindToHttpHandler(handler).build();
|
||||
this.rest = WebTestClient
|
||||
.bindToRouterFunction(routerFunction)
|
||||
.webFilter(springSecurityFilterChain)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void basicRequired() throws Exception {
|
||||
this.rest
|
||||
@ -160,7 +164,6 @@ public class HelloWebfluxFnApplicationTests {
|
||||
.expectStatus().isOk();
|
||||
}
|
||||
|
||||
@Ignore
|
||||
@Test
|
||||
public void mockSupport() throws Exception {
|
||||
this.rest
|
||||
|
Loading…
x
Reference in New Issue
Block a user