简体   繁体   English

EL1057E: 没有在上下文中注册 bean 解析器来解析对 bean 的访问

[英]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'.我正在使用此资源服务器来授权请求,但每当它尝试评估表达式-“@ipWhitelistingProvider.isItValid(request)”时,它会给出错误说明 - EL1057E:在上下文中没有注册 bean 解析器来解析对 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.我通过执行以下操作设法解决了这个问题:我的默认 OAuth2 表达式处理程序的 Bean 解析器是 null,所以我添加了一个带有显式设置应用程序上下文的 OAuth2WebSecurityExpressionHandler 的 @Bean。

@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在我的 ResourceServerConfigurerAdapter 中,我配置了资源并通过了上面的 bean

@Autowired
    private OAuth2WebSecurityExpressionHandler expressionHandler;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 EL1057E: 没有在上下文中注册的 bean 解析器来解析对 bean 的访问 - EL1057E: No bean resolver registered in the context to resolve access to bean Spring Boot 3.0/Security 6.0 迁移 - “EL1057E:没有在上下文中注册的 bean 解析器来解析对 bean 的访问......”在 SecurityFilterChain 中 - Spring Boot 3.0/Security 6.0 Migration - "EL1057E: No bean resolver registered in the context to resolve access to bean..." in SecurityFilterChain 上下文中没有注册 bean 解析器来解析对 bean 的访问 - No bean resolver registered in the context to resolve access to bean 没有注册bean解析器 - Getting No bean resolver registered Spring Security PreAuthorize自定义方法Bean解析器未注册? - Spring Security PreAuthorize Custom Method Bean resolver is not registered? 从 Spring 上下文获取 bean(以编程方式注册)? - Get a bean (programmatically registered) from Spring context? 使用带有应用程序上下文bean的Spring EL评估bean表达式 - Evaluate a bean expression with Spring EL with application context beans Spring应用程序上下文重新加载不会更新DelegatingFilterProxy注册的bean - Spring application context reloading doesn't update bean registered by DelegatingFilterProxy @RestController bean在根上下文中注册,尽管未包含在excludeFilters中 - @RestController bean registered in root context, despite being excluded in excludeFilters 如何从另一个上下文访问bean - How to access bean from another context
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM