spring引导不起作用

pepwfjgg  于 2021-07-16  发布在  Java
关注(0)|答案(0)|浏览(314)

我正在尝试让一个spring引导应用程序工作,它使用jersey(jax-rs)实现一个资源。应用程序配置了一个resourceserver,使用jwt令牌进行身份验证工作正常。所以我可以使用httpsecurity配置控制访问。
不过,在我的资源中,我想使用globalmethodsecurity。因此,基本上我只希望允许具有jwt令牌的调用方,并且使用注解(例如@rolesallowed))执行角色检查
不幸的是,我所有的@rolesallowed都被忽略了。
我在做这样的事情:https://github.com/phosphene/spring-boot-session-jersey-test-demo
只是这个示例—虽然启用了全局方法,但实际上没有任何注解。
那么,到目前为止我做了什么?我启用了全局方法安全性。另外,我的scanbasepackages确实包含了我项目中的所有类(资源等)。

@Configuration
@SpringBootApplication(scanBasePackages = {"org.jaun.clubmanager"})
@EnableWebSecurity
@EnableGlobalMethodSecurity(
    securedEnabled = true,
    jsr250Enabled = true,
    prePostEnabled = true)
public class MemberApplication {
}

我有一个jerseconfig可以注册我的所有资源:

@Component
@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {

        register(...);

    }
}

我的resourceserver类如下所示(并且可以工作,这意味着如果没有承载令牌,访问将被拒绝)。准备就绪的东西总是被允许的,并用于我的 Docker :

@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {

    // ...

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.cors() //
            .and() //
            .authorizeRequests() //
                .antMatchers("/**/readiness").permitAll();
    }
}

现在,当我将@denyall添加到我的jersey时,允许访问资源。怎么了?

@Path("/subscription-periods")
@DenyAll
public class SubscriptionPeriodResource {
}

我好像少了点什么。我读了所有其他类似的帖子,但还没有找到解决办法。
如果你想看我的项目。在这里:https://github.com/olijaun/club-manager springboot项目位于club manager springboot文件夹中。我想保护的资源之一就是:https://github.com/olijaun/club-manager/blob/master/club-manager-member/src/main/java/org/jaun/clubmanager/member/application/resource/subscriptionperiodresource.java
谢谢你的提示!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题