允许通过Spring Web安全性限制访问安全资源

问题描述 投票:0回答:1

需要一些建议

我使用弹簧网安全,例如

 @Override
public void configure(HttpSecurity http) throws Exception {
    http
        .headers().frameOptions().disable()
    .and()
        .authorizeRequests()
        .antMatchers("/app/profile-info").permitAll()
        .antMatchers("/app/**").authenticated()
        .antMatchers("/management/health").permitAll();

}

要访问API“应用”,您必须经过身份验证。但是,我想允许任何人使用app api一段时间,例如他们每天可以使用api 3次,之后他们需要注册服务

我研究了几种解决方案,例如使用ip并存储他们使用API​​的次数

我想知道弹簧安全是否有机制来实现上述目标?我一直找不到任何东西

spring-security
1个回答
0
投票

您描述的问题不是身份验证问题,而是授权问题。

我看到的方式是应该识别和验证用户(例如,如果可以在没有注册的情况下使用服务,则通过IP / SMS /等进行注册或识别)。然后,您将给定的配额与用户(DB中的简单字段)相关联,并在执行API中的任何方法之前检查它。据我所知,可以通过Attribute-Based Access Control实现spring security,你的自定义属性将检查用户是否超出配额。

另外,请注意一个名为Race condition的问题:用户可以尝试更快地访问资源(通过创建大量的同步请求),而不是在DB中更新配额计数器。在我一直在使用的几个弹簧应用程序中看到它。

© www.soinside.com 2019 - 2024. All rights reserved.