【问题标题】:Access control to rest services with spring-boot使用spring-boot对rest服务进行访问控制
【发布时间】:2017-02-16 01:32:44
【问题描述】:

我玩了一下弹簧启动安全性。我使用 mongodb、spring-boot-starter-data-rest、spring-boot-starter-security 和 spring-boot-starter-web。我使用了像 REST 服务这样的自动 expos 存储库的可能性。我有两个存储库用户和客户。用户存储库用于帐户。 像这样扩展 WebSecurityConfigurerAdapter 后:

@Override
protected void configure(HttpSecurity http) throws Exception {
    super.configure(http);
    http.authorizeRequests()
    .antMatchers("/users/**")
    .hasRole("ADMIN").antMatchers("/", "/customers")
    .hasRole("USER")
    .anyRequest().authenticated()
    .and()
    .formLogin().permitAll();
}

A 无法控制具有 ADMIN 角色的用户对 /users/ 页面的访问。我在访问服务时获得了身份验证,但是每个具有每个角色的用户都可以在任何地方访问。还应该配置什么?

【问题讨论】:

    标签: java spring mongodb spring-security spring-boot


    【解决方案1】:

    这听起来你需要看看Method Security Expressions Spring Security 的特性。尤其是注解@PreAuthorize/@PostAuthorize

    【讨论】:

    • 是的,从哪个类的方法?我只有实体类 users.java 和 customer.java。我使用自动生成的 REST?
    • 因此您需要使用 Spring Data JPA 存储库显式实现控制器 + 服务层。之后@PreAuthorize/@PostAuthorize 的最佳位置是服务层方法。
    • 我不能使用 MongoDB 自动曝光实体(带有生成的 REST),我希望实现访问控制?
    猜你喜欢
    • 1970-01-01
    • 2021-03-23
    • 2018-11-09
    • 1970-01-01
    • 2019-03-07
    • 2019-03-20
    • 1970-01-01
    • 2017-03-12
    • 2020-11-11
    相关资源
    最近更新 更多