Spring Security スタックから 1 つのデフォルト フィルターを除外する必要があります。したがって、すべてのフィルターは通常どおり機能するはずです。そうする方法を見つけたようです。カスタム FilterChainProxy を作成します。
public class CustomFilterChainProxy extends FilterChainProxy {
Logger LOGGER = Logger.getLogger(CustomFilterChainProxy.class);
public CustomFilterChainProxy() {
super();
LOGGER.debug("Run custom filter proxy");
LOGGER.debug("String filters: " + this.toString());
}
public CustomFilterChainProxy(SecurityFilterChain chain) {
super(chain);
LOGGER.debug("Run custom filter proxy with chains");
}
}
ご覧のとおり、フィルターのリストを取得するコンストラクターがあるため、必要に応じてチェーンからフィルターを 1 つ削除でき、残りはすべて通常どおりに機能します。しかし、そのようなコンストラクターのセキュリティ構成で Bean を作成することはできません。私が使用する場合
<bean id="filterChainProxy" class="com.pkg.CustomFilterChainProxy">
もちろん、デフォルトのコンストラクターでオブジェクトを構築します。わかりました、いくつかのフィルターのリストを使用して Bean を作成しようとします。
<bean id="filterChainProxy" class="ru.olekstra.backoffice.util.CustomFilterChainProxy">
<constructor-arg>
<list>
<sec:filter-chain pattern="/**"
filters="BasicUserApprovalFilter" />
</list>
</constructor-arg>
</bean>
しかし、これはコンパイルされません。なぜなら、BasicUserApprovalFilter は不明な Bean だからです。では、既定のフィルター スタックから 1 つのフィルターを除外するにはどうすればよいでしょうか? カスタム フィルター チェーン プロキシを使用する方法が適切な決定である場合、デフォルトのフィルター チェーンを使用して Bean を作成するにはどうすればよいですか?