跳到正文
灵动桌面框架
Esc
本栏目菜单

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:defaultTauri 核心默认权限集,展开后包含 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