如何创建可与quarkus.http.auth配合使用的命名HttpSecurityPolicy
解决Quarkus自定义HttpSecurityPolicy命名并配置引用的问题
要让你的自定义HttpSecurityPolicy能通过名称mypolicy在配置中引用,只需给实现类加上**@Named注解**——之前无效大概率是导错了注解包,必须用javax.inject.Named下的注解。
修改后的完整代码如下:
import io.quarkus.security.identity.SecurityIdentity; import io.quarkus.vertx.http.runtime.security.HttpSecurityPolicy; import io.smallrye.mutiny.Uni; import io.vertx.ext.web.RoutingContext; import javax.enterprise.context.ApplicationScoped; import javax.inject.Named; // 导入正确的Named注解 @ApplicationScoped @Named("mypolicy") // 指定策略名称 public class SecurityHandler implements HttpSecurityPolicy { @Override public Uni<CheckResult> checkPermission( final RoutingContext request, final Uni<SecurityIdentity> identity, final AuthorizationRequestContext requestContext) { // 你的权限校验逻辑实现 return ... } }
配置文件中即可正常引用该策略,还可补充路径、请求方法等匹配规则:
quarkus.http.auth.permission.mypermission.policy=mypolicy quarkus.http.auth.permission.mypermission.paths=/api/** quarkus.http.auth.permission.mypermission.methods=GET,POST
Quarkus的HttpSecurityProcessor会自动扫描带有@Named注解的HttpSecurityPolicy实现类,将其名称加入策略映射,完全不需要使用HttpSecurityPolicyBuildItem——那是扩展开发场景才会用到的API。
内容的提问来源于stack exchange,提问作者nil
相关产品推荐
相关产品推荐

