SuperAPI AI 工具集

configuring-tauri-permissions

安全与审计

查看项目

更新于 10-15 15:51

技能介绍

该技能面向 Tauri v2 权限系统,用于控制前端代码访问后端命令与系统资源。

用途:在 Tauri 应用中建立前端与系统资源之间的安全边界,只有显式授予权限的 command 才能被前端调用。

主要能力:权限(Permission)定义对具体命令的访问;作用域(Scope)将命令限制到特定路径或资源;能力(Capability)把权限绑定到窗口/webview;标识符命名格式为 <plugin-name>:<permission-type>,如 fs:default、fs:allow-read-file。拒绝规则始终优先于允许规则,且权限必须挂到 capability 才生效,每个窗口可有不同权限。

使用方式:在 src-tauri/capabilities/ 下以 JSON 或 TOML 编写 capability,声明 identifier、windows 与 permissions,可含 allow/deny 数组及 $APPDATA、$HOME、$DOCUMENT 等作用域变量与 、* 通配符;平台可用 platforms 限定。自定义权限写在 src-tauri/permissions/*.toml,可用 [[permission]] 定义命令与 scope,用 [[set]] 组合权限集。插件侧在 build.rs 用 tauri_plugin::Builder::new(COMMANDS).build() 自动生成 allow-/deny- 权限,并在 permissions/default.toml 定义默认集。最后在 tauri.conf.json 的 app.security.capabilities 中引用。

适用场景:文件系统、HTTP、Shell 等插件权限收敛;按窗口或平台区分权限;为远程 URL 开放 API(需谨慎,Linux 与 Android 无法区分 iframe 请求)。

限制与排错:常见报错包括“Not allowed on this command”、权限未找到;需检查标识符拼写(仅小写)、插件是否安装、cargo build 重新生成权限、capability 是否指向正确窗口,以及 deny 规则是否拦截。最佳实践是最小权限、使用具体作用域、拒绝 .ssh 等敏感路径、为不同窗口拆分 capability。