简体   繁体   中英

EL1057E: No bean resolver registered in the context to resolve access to bean

I am using this resource server for authorizing request but whenever it tries to evaluate expression-"@ipWhitelistingProvider.isItValid(request)" it gives error stating- EL1057E: No bean resolver registered in the context to resolve access to bean 'ipWhitelistingProvider'.

 @Profile("default")
    @EnableResourceServer
    @EnableWebSecurity
    @Configuration
    public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
        @Autowired
        IpWhitelistingProvider ipWhitelistingProvider;
    
        
        @Override
        public void configure(HttpSecurity http) throws Exception {
            http
            .authorizeRequests()
            .antMatchers("/").permitAll()
            
            .antMatchers("/config/**").access("@ipWhitelistingProvider.isItValid(request) or #oauth2.hasScope('config')")
            .anyRequest().authenticated()
            .and().csrf().disable();
        }

@Component("ipWhitelistingProvider")
public class IpWhitelistingProvider{

    
    @Value("${ip.whitelist:1}")
    List<String>whitelist;
    String ipAcessWhitelistingString;
    public boolean isItValid(HttpServletRequest request) {
        
        String ip=request.getRemoteAddr();
        if(whitelist.contains(ip)) {
            return true;
        }
        else {
            return false;
        }
    }
        
        
        
}

I managed to workaround this issue by doing the following: My default OAuth2 Expression Handler's Bean Resolver was null, so I added a @Bean with OAuth2WebSecurityExpressionHandler that explicitly sets the application context.

@Bean
    public OAuth2WebSecurityExpressionHandler oAuth2WebSecurityExpressionHandler(ApplicationContext applicationContext) {
        OAuth2WebSecurityExpressionHandler expressionHandler = new OAuth2WebSecurityExpressionHandler();
        expressionHandler.setApplicationContext(applicationContext);
        return expressionHandler;
    }

In my ResourceServerConfigurerAdapter, I configured resources and passed above bean

@Autowired
    private OAuth2WebSecurityExpressionHandler expressionHandler;

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
        resources.expressionHandler(expressionHandler);
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM