Capabilities 声明
Tauri 2.x 引入了 Capabilities(能力声明)机制,应用必须显式声明前端可调用的核心 / 插件权限。能力文件放在 src-tauri/capabilities/ 目录下,构建时自动加载,框架目前只有一个 default.json。
默认权限
// src-tauri/capabilities/default.json
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "主窗口默认权限",
"windows": ["main"],
"permissions": [
"core:default",
"core:window:default",
"core:window:allow-minimize",
"core:window:allow-maximize",
"core:window:allow-toggle-maximize",
"core:window:allow-close",
"core:window:allow-hide",
"core:window:allow-start-dragging",
"opener:default",
"store:default",
"log:default",
"core:menu:default",
"core:tray:default",
"updater:default",
"process:default"
]
}
| 权限 | 用途 |
|---|---|
core:default | Tauri 核心默认权限集,展开后包含 core:path / event / window / webview / app / image / resources / menu / tray 各自的 default |
core:window:allow-minimize / allow-maximize / allow-toggle-maximize / allow-close / allow-hide / allow-start-dragging | 主窗口是无边框窗口(decorations: false),标题栏的最小化、最大化、关闭按钮和拖动区域由前端自绘(src/components/layout/WindowControls.tsx),core:window:default 不含这些写操作,需单独放行 |
core:window:default / core:menu:default / core:tray:default | 已被 core:default 包含,这里显式列出便于阅读,重复声明无副作用 |
opener:default | 用系统默认程序打开链接 / 文件(tauri-plugin-opener) |
store:default | 键值持久化存储(tauri-plugin-store) |
log:default | 前端写日志(tauri-plugin-log) |
updater:default | 检查与安装更新(tauri-plugin-updater) |
process:default | 更新完成后重启应用(tauri-plugin-process 的 relaunch) |
windows: ["main"]表示这组权限只授予 label 为main的窗口;新开的其他窗口不会自动获得$schema指向src-tauri/gen/schemas/desktop-schema.json(构建时生成),编辑器据此提供权限标识符的补全和校验
权限粒度
每个插件提供不同级别的权限:
| 权限 | 说明 |
|---|---|
plugin:default | 插件默认权限(推荐) |
plugin:allow-xxx | 允许特定操作 |
plugin:deny-xxx | 拒绝特定操作 |
核心权限带 core: 前缀,如 core:window:allow-close。所有可用标识符可在 src-tauri/gen/schemas/ 下生成的 schema 中查到。
最小权限原则
- 只声明应用实际需要的权限
- 优先使用
default权限集 - 敏感操作需要单独声明
- 不同窗口可以有不同权限:新增窗口时在
capabilities/下另建一个 JSON,用windows字段指定窗口 label