当前位置: 首页 > 知识库问答 >
问题:

在Spring中至少需要一个映射错误

梁兴修
2023-03-14

这里有一个问题:我想保护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')");

    }
}

但这给了:

JAVAlang.IllegalStateException:至少需要一个映射(即authorizeRequests()。任何请求。已验证()

我尝试了好几种HttpSecurity builder的组合,但都无济于事——没有任何帮助,或者这种方法完全是不正确的?

共有1个答案

周浩淼
2023-03-14

这种做法是否完全离谱呢?

对。空的ResourceServerConfigurerAdapter对您没有帮助。您应该配置受保护的路径,例如。

@Override
public void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().antMatchers("/protectedUri").authenticated();
}

(并省略您的WebSecurityConfigrerAdapter)。

顶部的客户端配置看起来也不正确,但与受保护的资源无关(如果您想知道如何配置客户端,请开始一个新问题)。

 类似资料:
  • 问题内容: 在Spring MVC中,有两个上下文。一种是由引导的应用程序上下文或全局上下文。它采用参数中提到的所有配置文件。 现在,如果您还使用Spring MVC,则需要Dispatcher Servlet,它会启动另一个容器,该容器也称为Web应用程序容器。该容器将全局容器作为父容器。 将struts1与spring集成时,只有一个上下文。Spring MVC为什么需要两个?使用spring

  • 问题内容: 在此代码构造中: 是否可以要求至少包含一个这样的条目,以便在编译时检查?(当然,在运行时,我只能检查numbers.length。) 显然,我可以这样做: 但这不会很优雅。 我这样做的原因是要确保子类不会根本不忘记调用此构造函数,默认情况下,该构造函数将调用列表中没有数字的。在这种情况下,我想获得熟悉的错误消息:。 是否可以有另一种方法来实现相同的目标,例如将此构造函数标记为非隐式的@

  • 我使用的是OpenAPI3,有两个查询参数,其中至少有一个是必需的,但哪个并不重要。 这在OpenAPI3中可能吗?就我所见,规范和JSON模式规范中都没有提到它。

  • 问题内容: 运行此代码时出现4个错误,这些错误将用户的电子邮件地址添加到名为的表中称为的数据库中。 $ con = new mysqli(’localhost’,’root’,’‘,’ecommerce’); 错误是这样的: 警告:mysqli_query()至少需要2个参数,第27行给出1个 第27行: $ query = mysqli_query(“ SELECT * FROM subscri

  • 问题内容: 有人可以给我一个Hibernate中单向@OneToOne主键映射的示例吗?我已经尝试了多种组合,到目前为止,我得到的最好的东西是: 每当Hibernate尝试自动为上述映射生成模式时,它都会尝试将主键创建为blob(而不是long)(即PaperCheque的id类型)。有人能帮帮我吗 ?如果我无法找到确切的解决方案,那么可以采取一些措施,但我希望得到任何答复。 问题答案: 您的意图

  • 我的C#代码上有一个正则表达式,我想通过添加约束来编辑它,如果字符串不包含至少一个字母,则拒绝文本,不管是什么语言。 我的正则表达式: 有什么建议请。