From 6335caabaee083dd5812404c640d403e2424179c Mon Sep 17 00:00:00 2001 From: Andrey Litvitski Date: Fri, 27 Mar 2026 23:31:55 +0300 Subject: [PATCH] polish Signed-off-by: Andrey Litvitski --- .../ROOT/pages/servlet/architecture.adoc | 4 +- .../addingcustomfilter/CustomFilterTests.java | 2 +- ...tyConfig.java => SecurityConfigAfter.java} | 21 +++------- .../SecurityConfigBefore.java | 42 +++++++++++++++++++ .../addingcustomfilter/CustomFilterTests.kt | 2 +- .../addingcustomfilter/SecurityConfigAfter.kt | 42 +++++++++++++++++++ ...urityConfig.kt => SecurityConfigBefore.kt} | 20 ++------- 7 files changed, 97 insertions(+), 36 deletions(-) rename docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/{SecurityConfig.java => SecurityConfigAfter.java} (71%) create mode 100644 docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfigBefore.java create mode 100644 docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfigAfter.kt rename docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/{SecurityConfig.kt => SecurityConfigBefore.kt} (73%) diff --git a/docs/modules/ROOT/pages/servlet/architecture.adoc b/docs/modules/ROOT/pages/servlet/architecture.adoc index 92e0a34582..51670f0f8b 100644 --- a/docs/modules/ROOT/pages/servlet/architecture.adoc +++ b/docs/modules/ROOT/pages/servlet/architecture.adoc @@ -248,13 +248,13 @@ The previous description already gives us a clue on where to add the filter, sin Based on the rule of thumb, you can add it before xref:servlet/authentication/logout.adoc[`LogoutFilter`], like so: -include-code::./SecurityConfig[tag=snippet-before,indent=0] +include-code::./SecurityConfigBefore[tag=snippet,indent=0] <1> Use `HttpSecurity#addFilterBefore` to add the `TenantFilter` before the `LogoutFilter`. Or after xref:servlet/authentication/anonymous.adoc[`AnonymousAuthenticationFilter`], the last authentication filter in the chain, like so: -include-code::./SecurityConfig[tag=snippet-after,indent=0] +include-code::./SecurityConfigAfter[tag=snippet,indent=0] <1> Use `HttpSecurity#addFilterAfter` to add the `TenantFilter` after the `AnonymousAuthenticationFilter`. diff --git a/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/CustomFilterTests.java b/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/CustomFilterTests.java index b24b1274db..5c6acbdb56 100644 --- a/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/CustomFilterTests.java +++ b/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/CustomFilterTests.java @@ -47,7 +47,7 @@ import org.springframework.web.bind.annotation.RestController; @ContextConfiguration(classes = { CustomFilterTests.UserDetailsConfig.class, CustomFilterTests.ApiController.class, - SecurityConfig.class }) + SecurityConfigBefore.class }) @WebAppConfiguration public class CustomFilterTests { diff --git a/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfig.java b/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfigAfter.java similarity index 71% rename from docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfig.java rename to docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfigAfter.java index b009abfc65..d6e0b4ef45 100644 --- a/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfig.java +++ b/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfigAfter.java @@ -22,32 +22,21 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.AnonymousAuthenticationFilter; -import org.springframework.security.web.authentication.logout.LogoutFilter; import org.springframework.test.context.ContextConfiguration; @Configuration -@ContextConfiguration(classes = { SecurityConfig.class }) +@ContextConfiguration(classes = { SecurityConfigAfter.class }) @EnableWebSecurity -public class SecurityConfig { +public class SecurityConfigAfter { - // tag::snippet-before[] + // tag::snippet[] @Bean - public SecurityFilterChain filterChainBefore(HttpSecurity http) throws Exception { - http - // ... - .addFilterBefore(new TenantFilter(), LogoutFilter.class); // <1> - return http.build(); - } - // end::snippet-before[] - - // tag::snippet-after[] - @Bean - public SecurityFilterChain filterChainAfter(HttpSecurity http) throws Exception { + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http // ... .addFilterAfter(new TenantFilter(), AnonymousAuthenticationFilter.class); // <1> return http.build(); } - // end::snippet-after[] + // end::snippet[] } diff --git a/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfigBefore.java b/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfigBefore.java new file mode 100644 index 0000000000..5d3c5751a0 --- /dev/null +++ b/docs/src/test/java/org/springframework/security/docs/servlet/addingcustomfilter/SecurityConfigBefore.java @@ -0,0 +1,42 @@ +/* + * Copyright 2004-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.security.docs.servlet.addingcustomfilter; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.logout.LogoutFilter; +import org.springframework.test.context.ContextConfiguration; + +@Configuration +@ContextConfiguration(classes = { SecurityConfigBefore.class }) +@EnableWebSecurity +public class SecurityConfigBefore { + + // tag::snippet[] + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http + // ... + .addFilterBefore(new TenantFilter(), LogoutFilter.class); // <1> + return http.build(); + } + // end::snippet[] + +} diff --git a/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/CustomFilterTests.kt b/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/CustomFilterTests.kt index bd7c8241db..0dbbbde2b4 100644 --- a/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/CustomFilterTests.kt +++ b/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/CustomFilterTests.kt @@ -47,7 +47,7 @@ import org.springframework.web.bind.annotation.RestController classes = [ CustomFilterTests.UserDetailsConfig::class, CustomFilterTests.ApiController::class, - SecurityConfig::class + SecurityConfigBefore::class ] ) @WebAppConfiguration diff --git a/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfigAfter.kt b/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfigAfter.kt new file mode 100644 index 0000000000..98b9a6b07d --- /dev/null +++ b/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfigAfter.kt @@ -0,0 +1,42 @@ +/* + * Copyright 2004-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.security.kt.docs.servlet.addingcustomfilter + +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.config.annotation.web.builders.HttpSecurity +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity +import org.springframework.security.config.annotation.web.invoke +import org.springframework.security.web.SecurityFilterChain +import org.springframework.security.web.authentication.AnonymousAuthenticationFilter + +@Configuration +@EnableWebSecurity +open class SecurityConfigAfter { + + // tag::snippet[] + @Bean + open fun filterChain(http: HttpSecurity): SecurityFilterChain { + http { + // ... + addFilterAfter(TenantFilter()) // <1> + } + return http.build() + } + // end::snippet[] + +} diff --git a/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfig.kt b/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfigBefore.kt similarity index 73% rename from docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfig.kt rename to docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfigBefore.kt index dde05d81a0..b569769ffe 100644 --- a/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfig.kt +++ b/docs/src/test/kotlin/org/springframework/security/kt/docs/servlet/addingcustomfilter/SecurityConfigBefore.kt @@ -22,33 +22,21 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity import org.springframework.security.config.annotation.web.invoke import org.springframework.security.web.SecurityFilterChain -import org.springframework.security.web.authentication.AnonymousAuthenticationFilter import org.springframework.security.web.authentication.logout.LogoutFilter @Configuration @EnableWebSecurity -open class SecurityConfig { +open class SecurityConfigBefore { - // tag::snippet-before[] + // tag::snippet[] @Bean - open fun filterChainBefore(http: HttpSecurity): SecurityFilterChain { + open fun filterChain(http: HttpSecurity): SecurityFilterChain { http { // ... addFilterBefore(TenantFilter()) // <1> } return http.build() } - // end::snippet-before[] - - // tag::snippet-after[] - @Bean - open fun filterChainAfter(http: HttpSecurity): SecurityFilterChain { - http { - // ... - addFilterAfter(TenantFilter()) // <1> - } - return http.build() - } - // end::snippet-after[] + // end::snippet[] }