You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus集成Keycloak:含路径参数的permit配置失效求助

问题解决:Quarkus OIDC权限配置中路径参数无法生效的原因及方案

Quarkus的quarkus.http.auth.permission.*系列配置采用Ant风格路径匹配规则,并不支持JAX-RS里{param}这种路径参数语法。你写的{restaurantId}会被当作路径的固定字符串部分去匹配,自然无法命中实际请求,而*是Ant风格里匹配单个路径段的通配符,所以能正常生效。

可行解决方案

方案1:用Ant风格通配符匹配任意路径段

如果只是需要匹配/restaurant/menu/后跟随任意单个路径段(对应你的restaurantId参数),直接将配置改为:

quarkus.http.auth.permission.public-api.paths=/restaurant/menu/*
quarkus.http.auth.permission.public-api.policy=permit

这个配置的效果和你期望的{restaurantId}完全一致,*会匹配该位置的任意单个路径内容(比如数字、字符串形式的ID)。

方案2:正则匹配实现精确校验

如果需要对restaurantId的格式做限制(比如仅允许数字),可以开启正则匹配模式:

  1. 先开启正则支持:
quarkus.http.auth.permission.public-api.regex=true
  1. 配置正则路径:
quarkus.http.auth.permission.public-api.paths=^/restaurant/menu/[0-9]+$

这样只会匹配restaurantId为纯数字的请求。

关键说明

Quarkus的权限匹配是在请求到达业务端点前执行的,仅解析原始URL路径,不会关联代码中定义的JAX-RS端点路径参数占位符,因此不能用{param}语法来定义权限路径规则。

内容的提问来源于stack exchange,提问作者Altafhusen Makandar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:12:09