Skip to content

Commit 9f23212

Browse files
committed
HttpStatusServerAccessDeniedHandler use injected HttpStatus
Fixes: gh-5078
1 parent ca93b34 commit 9f23212

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

web/src/main/java/org/springframework/security/web/server/authorization/HttpStatusServerAccessDeniedHandler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public HttpStatusServerAccessDeniedHandler(HttpStatus httpStatus) {
4646
public Mono<Void> handle(ServerWebExchange exchange, AccessDeniedException e) {
4747
return Mono.defer(() -> Mono.just(exchange.getResponse()))
4848
.flatMap(response -> {
49-
response.setStatusCode(HttpStatus.FORBIDDEN);
49+
response.setStatusCode(this.httpStatus);
5050
response.getHeaders().setContentType(MediaType.TEXT_PLAIN);
5151
DataBufferFactory dataBufferFactory = response.bufferFactory();
5252
DataBuffer buffer = dataBufferFactory.wrap(e.getMessage().getBytes(

web/src/test/java/org/springframework/security/web/server/authorization/HttpStatusServerAccessDeniedHandlerTests.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
public class HttpStatusServerAccessDeniedHandlerTests {
3939
@Mock
4040
private ServerWebExchange exchange;
41-
private final HttpStatus httpStatus = HttpStatus.FORBIDDEN;
41+
private HttpStatus httpStatus = HttpStatus.FORBIDDEN;
4242
private HttpStatusServerAccessDeniedHandler handler = new HttpStatusServerAccessDeniedHandler(this.httpStatus);
4343

4444
private AccessDeniedException exception = new AccessDeniedException("Forbidden");
@@ -63,4 +63,15 @@ public void commenceWhenSubscribeThenStatusSet() {
6363

6464
assertThat(this.exchange.getResponse().getStatusCode()).isEqualTo(this.httpStatus);
6565
}
66+
67+
@Test
68+
public void commenceWhenCustomStatusSubscribeThenStatusSet() {
69+
this.httpStatus = HttpStatus.NOT_FOUND;
70+
this.handler = new HttpStatusServerAccessDeniedHandler(this.httpStatus);
71+
this.exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/").build());
72+
73+
this.handler.handle(this.exchange, this.exception).block();
74+
75+
assertThat(this.exchange.getResponse().getStatusCode()).isEqualTo(this.httpStatus);
76+
}
6677
}

0 commit comments

Comments
 (0)