Skip to content

Commit 0d63921

Browse files
committed
Return Mono<Void> in ServerCsrfTokenRequestHandler#handle
Returning Mono<Void> from ServerCsrfTokenRequestHandler#handle would allow non-blocking response writes. Closes: gh-16869 Signed-off-by: Andrey Litvitski <andrey1010102008@gmail.com>
1 parent 42e1e9f commit 0d63921

3 files changed

Lines changed: 7 additions & 4 deletions

File tree

web/src/main/java/org/springframework/security/web/server/csrf/ServerCsrfTokenRequestAttributeHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
*
3636
* @author Steve Riesenberg
3737
* @author Yoobin Yoon
38+
* @author Andrey Litvitski
3839
* @since 5.8
3940
*/
4041
public class ServerCsrfTokenRequestAttributeHandler implements ServerCsrfTokenRequestHandler {
@@ -44,11 +45,12 @@ public class ServerCsrfTokenRequestAttributeHandler implements ServerCsrfTokenRe
4445
private boolean isTokenFromMultipartDataEnabled;
4546

4647
@Override
47-
public void handle(ServerWebExchange exchange, Mono<CsrfToken> csrfToken) {
48+
public Mono<Void> handle(ServerWebExchange exchange, Mono<CsrfToken> csrfToken) {
4849
Assert.notNull(exchange, "exchange cannot be null");
4950
Assert.notNull(csrfToken, "csrfToken cannot be null");
5051
exchange.getAttributes().put(CsrfToken.class.getName(), csrfToken);
5152
logger.trace(LogMessage.format("Wrote a CSRF token to the [%s] exchange attribute", CsrfToken.class.getName()));
53+
return Mono.empty();
5254
}
5355

5456
@Override

web/src/main/java/org/springframework/security/web/server/csrf/ServerCsrfTokenRequestHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public interface ServerCsrfTokenRequestHandler extends ServerCsrfTokenRequestRes
4141
* @param csrfToken the {@code Mono<CsrfToken>} created by the
4242
* {@link ServerCsrfTokenRepository}
4343
*/
44-
void handle(ServerWebExchange exchange, Mono<CsrfToken> csrfToken);
44+
Mono<Void> handle(ServerWebExchange exchange, Mono<CsrfToken> csrfToken);
4545

4646
@Override
4747
default Mono<String> resolveCsrfTokenValue(ServerWebExchange exchange, CsrfToken csrfToken) {

web/src/main/java/org/springframework/security/web/server/csrf/XorServerCsrfTokenRequestAttributeHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
*
3838
* @author Steve Riesenberg
3939
* @author Yoobin Yoon
40+
* @author Andrey Litvitski
4041
* @since 5.8
4142
*/
4243
public final class XorServerCsrfTokenRequestAttributeHandler extends ServerCsrfTokenRequestAttributeHandler {
@@ -56,15 +57,15 @@ public void setSecureRandom(SecureRandom secureRandom) {
5657
}
5758

5859
@Override
59-
public void handle(ServerWebExchange exchange, Mono<CsrfToken> csrfToken) {
60+
public Mono<Void> handle(ServerWebExchange exchange, Mono<CsrfToken> csrfToken) {
6061
Assert.notNull(exchange, "exchange cannot be null");
6162
Assert.notNull(csrfToken, "csrfToken cannot be null");
6263
Mono<CsrfToken> updatedCsrfToken = csrfToken
6364
.map((token) -> new DefaultCsrfToken(token.getHeaderName(), token.getParameterName(),
6465
createXoredCsrfToken(this.secureRandom, token.getToken())))
6566
.cast(CsrfToken.class)
6667
.cache();
67-
super.handle(exchange, updatedCsrfToken);
68+
return super.handle(exchange, updatedCsrfToken);
6869
}
6970

7071
@Override

0 commit comments

Comments
 (0)