Замена стандартного RememberMeAuthenticationProvider, добавленного Spring-securityJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Замена стандартного RememberMeAuthenticationProvider, добавленного Spring-security

Сообщение Anonymous »

Мне нужно предоставить собственный поставщик RememberMeAuthenticationProvider, и я знаю, как это сделать. Но созданный по умолчанию поставщик по-прежнему присутствует в списке провайдеров ProviderManager.
Можно ли полностью заменить поставщика по умолчанию на собственный?
Как Добавляю свои

Код: Выделить всё

    @Bean
public RememberMeAuthenticationProvider rememberMeAuthenticationProvider(MessageSource messageSource) {
var authProvider = new MyRememberMeAuthenticationProvider(REMEMBER_ME_KEY);
authProvider.setMessageSource(messageSource);
return authProvider;
}

@Bean
public SecurityFilterChain filterChain(HttpSecurity http,
MvcRequestMatcher.Builder mvc,
MessageSource messageSource) throws Exception {
http
.csrf(csrf -> csrf.csrfTokenRequestHandler(csrfRequestHandler)
.ignoringRequestMatchers(LOGIN_URI + "**"))
.authenticationProvider(authenticationProvider)
.authenticationProvider(rememberMeAuthenticationProvider(messageSource))

return http.build();
}
Но RememberMeConfigurer безоговорочно добавляет конфигурацию по умолчанию

Код: Выделить всё

@Override
public void configure(H http) {
RememberMeAuthenticationFilter rememberMeFilter = new RememberMeAuthenticationFilter(
http.getSharedObject(AuthenticationManager.class), this.rememberMeServices);
if (this.authenticationSuccessHandler != null) {
rememberMeFilter.setAuthenticationSuccessHandler(this.authenticationSuccessHandler);
}
SecurityContextConfigurer securityContextConfigurer = http.getConfigurer(SecurityContextConfigurer.class);
if (securityContextConfigurer != null && securityContextConfigurer.isRequireExplicitSave()) {
SecurityContextRepository securityContextRepository = securityContextConfigurer
.getSecurityContextRepository();
rememberMeFilter.setSecurityContextRepository(securityContextRepository);
}
rememberMeFilter.setSecurityContextHolderStrategy(getSecurityContextHolderStrategy());
rememberMeFilter = postProcess(rememberMeFilter);
http.addFilter(rememberMeFilter);
}
Это приводит к этому списку настроенных поставщиков.

Код: Выделить всё

0 = {MyAuthenticationProvider@17013}
1 = {MyRememberMeAuthenticationProvider@16992}
2 = {AnonymousAuthenticationProvider@26592}
3 = {RememberMeAuthenticationProvider@18312}
Сейчас это работает, вероятно, из-за порядка, но мне бы очень хотелось полностью удалить стандартный вариант.
Возможно ли это?< /p>
Большое спасибо,
Майк

Подробнее здесь: https://stackoverflow.com/questions/792 ... g-security
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»