Ztron 沿用 Tauri v2 的 ACL(访问控制列表)模型:默认全拒,前端能 调用的每个命令、能访问的每条路径/URL 都必须在 capability 中显式授权。
capabilities/*.json 在应用启动时自动加载(默认目录
./capabilities)。摘自 examples/hello/capabilities/main.json 头部:
identifier 是 capability 的名字,windows 声明它授权给哪些窗口
label,permissions 是权限串列表。
权限串统一为 plugin:permission 两段式——插件(或 core)名 + 具体
权限。例如 fs:allow-read-file 只授权 fs 插件的 readFile 命令;
core:default 是 core 命令的默认集合。未列出的命令调用会被后端拒绝,
即使该插件的 handler 已注册(验证锚点 ACL_DENY_OK)。
权限之外,涉及文件/网络的插件还有 scope 约束,均摘自 hello 的
src/main.ts:
fsPlugin({ scope: psScope }),其中持久化基线 scope: { allow: ["$TMP/**"] }
——只允许临时目录及子树。httpPlugin({ scope: { allow: [{ url: "https://api.github.com/*" }, { url: "http://localhost:*/*" }] } })。
越界 URL 直接拒绝(验证锚点 HTTP_SCOPE_DENY_OK)。storePlugin({ scope: { allow: ["$TMP/**"] } })。生产 CSP 通过 app.security.csp 配置,由框架注入页面;开发环境可用
devCsp 单独配置,避免开发服务器的宽松策略进入生产。旧顶层 csp
键仍可用,但建议迁移到 app.security.csp。
适用版本:ztron 0.3.1