用途:指导开发者配置 Tauri 插件权限、能力与安全策略,适用于桌面与移动应用,实现细粒度访问控制。
主要能力:
- 能力文件:位于 src-tauri/capabilities/,为特定窗口和平台分配权限,遵循最小权限原则。结构含 identifier、description、local、windows、permissions、platforms。
- 权限两级:命令级(如 allow-write-text-file)与作用域级(路径限制)。
- 平台定向:用 platforms 字段限定 linux/windows/macos/android/ios,可做桌面或移动专属能力。
- 窗口定向:为不同窗口创建独立能力文件,也可共享。窗口在 tauri.conf.json 定义 label。
- 插件权限:默认集用 plugin-name:default;标识格式为 plugin-name:permission-name。可用 allow 对象限定路径,常见变量有 $APP、$HOME、$RESOURCE、$TEMP、$DESKTOP、$DOCUMENT、$DOWNLOAD。
- 拒绝权限:显式 deny,如 fs:deny-write-text-file。
- 自定义插件:cargo tauri plugin new my-plugin 创建;在 commands.rs 用 #[command] 定义命令;build.rs 中 tauri_plugin::Builder::new(COMMANDS) 自动生成 allow/deny 权限;permissions/default.toml 定义默认权限,permissions/*.toml 用 [[set]] 定义权限集;lib.rs 用 Builder::new 注册 invoke_handler。前端通过 invoke('plugin:my-plugin|read_data', { key }) 调用。
使用方式:编写能力 JSON 分配到窗口与平台,引用插件权限或自定义权限集,修改后需重新构建。
适用场景:需要按窗口或平台隔离权限、限制文件访问范围、开发自有插件并暴露受控 API 的 Tauri 项目。
限制与排查:权限报错时检查 JSON 语法、窗口 label、权限标识、是否缺少 scope;能力未生效时确认文件位于 src-tauri/capabilities/、windows 与 platforms 匹配并重新构建。官方权限清单与可用权限列表需查阅 Tauri 文档、插件 permissions 目录或仓库,资料未提供完整清单。