From d55db837e10570e24d0355c7be070dcb591c091c Mon Sep 17 00:00:00 2001
From: Rob Winch
Date: Mon, 20 Nov 2017 14:16:49 -0600
Subject: [PATCH] CsrfWebFilter places Mono
Fixes: gh-4855
---
.../config/web/server/FormLoginTests.java | 11 +--
.../config/web/server/RequestCacheTests.java | 2 -
.../java/sample/CsrfControllerAdvice.java | 38 ++++++++++
.../view/CsrfRequestDataValueProcessor.java | 6 +-
.../web/server/csrf/CsrfWebFilter.java | 16 +++--
.../WebSessionServerCsrfTokenRepository.java | 71 +------------------
.../ui/LoginPageGeneratingWebFilter.java | 4 +-
.../ui/LogoutPageGeneratingWebFilter.java | 4 +-
.../CsrfRequestDataValueProcessorTests.java | 5 +-
.../web/server/csrf/CsrfWebFilterTests.java | 6 --
...SessionServerCsrfTokenRepositoryTests.java | 24 ++-----
11 files changed, 73 insertions(+), 114 deletions(-)
create mode 100644 samples/javaconfig/webflux-form/src/main/java/sample/CsrfControllerAdvice.java
diff --git a/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java b/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java
index 3dc4ba41b7..70b0fa60f8 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java
@@ -33,6 +33,7 @@ import org.springframework.test.web.reactive.server.WebTestClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
import static org.assertj.core.api.Assertions.assertThat;
@@ -314,9 +315,9 @@ public class FormLoginTests {
public static class CustomLoginPageController {
@ResponseBody
@GetMapping("/login")
- public String login(ServerWebExchange exchange) {
- CsrfToken token = exchange.getAttribute(CsrfToken.class.getName());
- return
+ public Mono login(ServerWebExchange exchange) {
+ Mono token = exchange.getAttributeOrDefault(CsrfToken.class.getName(), Mono.empty());
+ return token.map(t ->
"\n"
+ "\n"
+ " \n"
@@ -338,12 +339,12 @@ public class FormLoginTests {
+ " \n"
+ " \n"
+ "
\n"
- + " \n"
+ + " \n"
+ " \n"
+ " \n"
+ " \n"
+ " \n"
- + "";
+ + "