Я хочу реализовать конфигурацию SAML и пользовательскую конфигурацию в моем приложении в зависимости от атрибута состояния класса. Но в зависимости от конфигурации пользовательские фильтры в весеннем http config также изменятся. Я уже пытался изменить контекст фильтров в зависимости от переменной, но это не удалось. В конце я попытался использовать SPEL, но
<bean id="SAMLUtil" class="blabla.SAMLUtil" />
<security:http realm="Protected API" use-expressions="true" auto-config="false" entry-point-ref="multiAuthenticationEntryPoint" >
<security:intercept-url pattern="/api/**" access="isAuthenticated()" />
<security:csrf disabled="true" />
<security:custom-filter ref="#{ 'SAMLUtil.isStateZero()'.equals('true') ? 'authenticationTokenProcessingFilter' : ''}" position="#{'SAMLUtil.isStateZero()'.equals('true') ? 'FORM_LOGIN_FILTER' : '' }" />
<security:custom-filter before="#{ 'SAMLUtil.isStateZero()'.equals('true') ? 'FORM_LOGIN_FILTER' : '' }" ref="#{ 'SAMLUtil.isStateZero()'.equals('true') ? 'loginStateFilterCheck' : '' }" />
<security:custom-filter before="#{ 'SAMLUtil.isStateOne()'.equals('true') ? 'CHANNEL_FILTER' : '' }" ref="#{ 'SAMLUtil.isStateOne()'.equals('true') ? 'metadataGeneratorFilter' : ''} "/>
<security:custom-filter position="#{ 'SAMLUtil.isStateZero()'.equals('true') ? 'CORS_FILTER' : '' } " ref="#{ 'SAMLUtil.isStateZero()'.equals('true') ? 'simpleCorsFilter' : '' }" />
<security:custom-filter after="#{ 'SAMLUtil.isStateOne()'.equals('true') ? : 'BASIC_AUTH_FILTER' : '' } " ref="#{ 'SAMLUtil.isStateOne()'.equals('true') ? 'samlFilter"/>
</security:http>
У меня есть следующие ошибки, и, как я понимаю, теги типа после и до ожидают результаты перечисления.
Multiple annotations found at this line:
- cvc-attribute.3: The value '#{'SAMLUtil.isStateZero()'.equals('true') ? 'FORM_LOGIN_FILTER' : '' }' of attribute 'position' on element 'security:custom-filter' is not valid with respect to its type, 'named-security-filter'.
- cvc-enumeration-valid: Value '#{'SAMLUtil.isStateZero()'.equals('true') ? 'FORM_LOGIN_FILTER' : '' }' is not facet-valid with respect to enumeration '[FIRST, CHANNEL_FILTER, SECURITY_CONTEXT_FILTER,
CONCURRENT_SESSION_FILTER, WEB_ASYNC_MANAGER_FILTER, HEADERS_FILTER, CORS_FILTER, CSRF_FILTER, LOGOUT_FILTER, X509_FILTER, PRE_AUTH_FILTER, CAS_FILTER, FORM_LOGIN_FILTER, OPENID_FILTER,
LOGIN_PAGE_FILTER, DIGEST_AUTH_FILTER, BASIC_AUTH_FILTER, REQUEST_CACHE_FILTER, SERVLET_API_SUPPORT_FILTER, JAAS_API_SUPPORT_FILTER, REMEMBER_ME_FILTER, ANONYMOUS_FILTER,
SESSION_MANAGEMENT_FILTER, EXCEPTION_TRANSLATION_FILTER, FILTER_SECURITY_INTERCEPTOR, SWITCH_USER_FILTER, LAST]'. It must be a value from the enumeration.
Как я могу использовать сменные фильтры в тегах пользовательских фильтров?
Примечание. Это мой первый вопрос, заранее благодарю.