问题
I'd like to modify the OAuth2ClientAuthenticationProcessingFilter
which is created by the @EnableOAuth2Sso
configuration in Spring Boot 1.3.2. As far as I can tell, the OAuth2ClientAuthenticationProcessingFilter
class is constructed internally without any application context wiring. Is there a way to do this?
回答1:
Not sure this is the best way of doing it, but you can do this with a BeanPostProcessor:
public static class DefaultRolesPrefixPostProcessor implements BeanPostProcessor, PriorityOrdered {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof FilterChainProxy) {
FilterChainProxy chains = (FilterChainProxy) bean;
for (SecurityFilterChain chain : chains.getFilterChains()) {
for (Filter filter : chain.getFilters()) {
if (filter instanceof OAuth2ClientAuthenticationProcessingFilter) {
OAuth2ClientAuthenticationProcessingFilter oAuth2ClientAuthenticationProcessingFilter = (OAuth2ClientAuthenticationProcessingFilter) filter;
oAuth2ClientAuthenticationProcessingFilter
.setAuthenticationSuccessHandler(authenticationSuccessHandler());
}
}
}
}
return bean;
}
}
来源:https://stackoverflow.com/questions/35617718/modifying-the-oauth2clientauthenticationprocessingfilter-in-spring-boot