SuperAPI AI 工具集

electric-proxy-auth

通用与其它

查看项目

更新于 10-15 21:37

技能介绍

用途:为 Electric(@electric-sql/client v1.5.10)搭建服务端代理,安全转发 shape 请求,避免客户端直连 Electric 的公开 HTTP API。该技能建立在 electric-shapes 之上,需先阅读其 ShapeStream 配置。

主要能力:仅转发 ELECTRIC_PROTOCOL_QUERY_PARAMS,由服务端设置 table、where、secret;支持用 WHERE 参数做租户隔离(如 org_id = $1 配合 params[1]);支持 401 时通过 onError 刷新令牌;支持跨域代理的 CORS 头配置;说明子集安全语义——主 shape 的 WHERE 与客户端 POST 的子集 WHERE 以 AND 组合,子集只能收窄不能放宽,WHERE 1=1 也无法绕过。

使用方式:服务端路由(示例为 Next.js App Router)中构造 /v1/shape 的 originUrl,遍历请求参数时用 ELECTRIC_PROTOCOL_QUERY_PARAMS 过滤,再设置 table 与 secret,fetch 后删除 content-encoding 和 content-length 头再返回;客户端 ShapeStream 的 url 指向代理路由(如 /api/todos),而非 Electric 直连地址。

限制与常见错误:切勿转发全部客户端参数,否则客户端可控制 table、where、columns 访问任意表;必须删除 content-encoding 与 content-length,否则浏览器解码失败;密钥只能在服务端注入,不可用 VITE_* 等暴露到浏览器;WHERE 中禁止字符串插值,须用位置参数防 SQL 注入;Bun 默认 fetch 并发上限 256,可用 BUN_CONFIG_MAX_HTTP_REQUESTS=4096 调整(Node、Deno 无此限制);跨域时需通过 Access-Control-Expose-Headers 暴露 electric-offset、electric-handle、electric-schema、electric-cursor,否则客户端抛 MissingHeadersError;生产环境不应从客户端直连 Electric。

适用场景:需要鉴权、多租户隔离或隐藏数据源的生产部署。其他细节资料未提供。