Modifying the OAuth2ClientAuthenticationProcessingFilter in Spring Boot

北战南征 提交于 2019-12-23 05:22:09

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!