spring boot中如何给接口添加白名单限制

1,497 阅读1分钟

在Spring Boot中,我们可以通过几种方式为接口添加白名单限制:

  1. 使用@CrossOrigin注解:
@RestController
@RequestMapping("/api")
public class TestController {
    @CrossOrigin(origins = "http://example.com")
    @GetMapping("/test")
    public String test() {
        return "Hello";
    }
}

这个接口只允许example.com域名的请求访问。

  1. 全局跨域配置:
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
            .allowedOrigins("http://example.com")
            .allowedMethods("GET", "POST");
    }
}

这个配置会使所有/api/**接口只允许example.com域名的GET和POST请求访问。

  1. 使用过滤器添加白名单:
@Component
public class CorsFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        response.setHeader("Access-Control-Allow-Origin", "http://example.com");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST");
        filterChain.doFilter(request, response);
    }
}

这个过滤器会为所有请求添加跨域头,只允许example.com域名的GET和POST请求访问。

  1. 在网关层添加全局跨域配置和白名单: 如果使用了API网关,我们也可以在网关层添加跨域配置和白名单,从而实现对所有微服务接口的控制。

通过以上几种方式,我们可以有效地为Spring Boot中的接口添加白名单限制。请 let me know 如果您有任何其他问题!