Spring中至少需要一个映射错误
Posted
技术标签:
【中文标题】Spring中至少需要一个映射错误【英文标题】:At least one mapping is required erro in Spring 【发布时间】:2014-11-18 08:51:09 【问题描述】:这里有个问题:我想保护一个 URI,直到获得一些第三方 OAuth2 的授权。基于http://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/config/annotation/web/configuration/EnableOAuth2Client.html,我有这些:
@Configuration
@EnableOAuth2Client
public class OAuth2Client extends OAuth2ClientConfiguration
@Bean
public Filter filter()
DelegatingFilterProxy f = new DelegatingFilterProxy();
f.setTargetBeanName("oauth2ClientContextFilter");
return f;
@Resource
@Qualifier("oauth2ClientContextFilter")
private OAuth2ClientContextFilter oauth2ClientContextFilter;
@Resource
@Qualifier("accessTokenRequest")
private AccessTokenRequest accessTokenRequest;
@Bean
public OAuth2ProtectedResourceDetails remote()
AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
details.setUserAuthorizationUri("http://localhost2/oauth/authorize");
return details;
@Bean
public OAuth2RestOperations restTemplate()
return new OAuth2RestTemplate(remote(), new DefaultOAuth2ClientContext(
accessTokenRequest));
和
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter
// Empty for now...
最后
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception
super.configure(auth);
@Override
protected void configure(HttpSecurity http) throws Exception
http.requestMatchers().antMatchers("/protectedUri").and()
.authorizeRequests().requestMatchers()
.hasRole("#oauth2.hasScope('read')");
但这给出了:
java.lang.IllegalStateException: 至少需要一个映射 (即 authorizeRequests().anyRequest.authenticated())
我尝试了很多 HttpSecurity 构建器的组合都无济于事 - 任何帮助,还是这种方法完全不符合标准?
【问题讨论】:
【参考方案1】:这种方法完全没有根据吗?
是的。一个空的ResourceServerConfigurerAdapter
不会帮助你。您应该配置受保护的路径,例如
@Override
public void configure(HttpSecurity http) throws Exception
http.authorizeRequests().antMatchers("/protectedUri").authenticated();
(省略你的WebSecurityConfigurerAdapter
)。
顶部的客户端配置看起来也有问题,但它与受保护的资源无关(如果您想知道如何配置客户端,请提出一个新问题)。
【讨论】:
是的,我留给以后的客户端配置。但是现在我摆脱了 WebSEcurityConfigurerAdapter 并将配置调用添加到 ResourceServerConfigurerAdapter 我得到 Error creation bean with name 'oauth2ClientContextFilter': Requested bean is current in creation: Is there an unresolvable circular reference? 如果你把它留到以后为什么它还在? 我把它留到了以后 - 这有关系吗? 资源服务器不需要OAuth2ClientContextFilter
,所以我猜你还有客户端配置的残余要删除?
等一下 - 我正在尝试通过 docs.spring.io/spring-security/oauth/apidocs/org/… 进行操作 - 我有一个受保护的资源并希望使用第三方对其进行授权。以上是关于Spring中至少需要一个映射错误的主要内容,如果未能解决你的问题,请参考以下文章
带有 Maven Shade 插件的 Spring Boot - 未映射控制器(404 错误)
在 Spring MVC 中映射 Ajax 请求:不允许出现错误 405 方法