EL1057E: 没有在上下文中注册 bean 解析器来解析对 bean 的访问
Posted
技术标签:
【中文标题】EL1057E: 没有在上下文中注册 bean 解析器来解析对 bean 的访问【英文标题】:EL1057E: No bean resolver registered in the context to resolve access to bean 【发布时间】:2021-06-22 05:01:24 【问题描述】:我正在使用此资源服务器来授权请求,但每当它尝试评估表达式 -“@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;
【问题讨论】:
有同样问题的人吗? 【参考方案1】:我通过执行以下操作设法解决了这个问题: 我的默认 OAuth2 Expression Handler 的 Bean Resolver 为 null,因此我添加了一个带有 OAuth2WebSecurityExpressionHandler 的 @Bean,它显式设置了应用程序上下文。
@Bean
public OAuth2WebSecurityExpressionHandler oAuth2WebSecurityExpressionHandler(ApplicationContext applicationContext)
OAuth2WebSecurityExpressionHandler expressionHandler = new OAuth2WebSecurityExpressionHandler();
expressionHandler.setApplicationContext(applicationContext);
return expressionHandler;
在我的 ResourceServerConfigurerAdapter 中,我配置了资源并通过了上面的 bean
@Autowired
private OAuth2WebSecurityExpressionHandler expressionHandler;
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception
resources.expressionHandler(expressionHandler);
【讨论】:
以上是关于EL1057E: 没有在上下文中注册 bean 解析器来解析对 bean 的访问的主要内容,如果未能解决你的问题,请参考以下文章