用途:Tauri 能力(Capabilities)是权限管理机制,用于精细控制前端可访问的 API 与命令,并按窗口或 WebView 划分安全边界,降低前端被攻破后的影响。
主要能力:能力是权限与窗口/WebView 之间的桥梁,可指定某窗口被授予或拒绝哪些权限;按窗口标签(非标题)建立边界;支持按平台(linux、macOS、windows、iOS、android)定向;支持远程 URL 访问配置。能力文件放在 src-tauri/capabilities/,使用 JSON 或 TOML。字段包括 identifier(必填)、description、windows(必填,支持通配符)、permissions(必填)、platforms、remote、$schema。
使用方式:默认目录内所有能力自动启用;也可在 tauri.conf.json 的 app.security.capabilities 中显式列出,此时仅列出的能力生效。支持三种配置方法:独立文件(推荐)、在 tauri.conf.json 内联定义、两者混用。权限命名规则为 <plugin>:default、<plugin>:allow-<command>、<plugin>:deny-<command>,例如 core:window:allow-close、fs:allow-read-file、shell:allow-open。窗口可用具体标签、多个标签、通配符 * 或模式如 dialog-*。平台变体可拆分为 desktop.json 与 mobile.json。远程访问通过 remote.urls 配置,需谨慎使用。$schema 指向构建后生成的 desktop-schema.json、mobile-schema.json、remote-schema.json 以获得 IDE 补全。
适用场景:多窗口应用按窗口分配不同权限(主窗口全量、设置窗口受限、预览窗口只读);桌面与移动端差异化权限;需要为远程页面开放特定命令时。
限制:能力无法防御恶意 Rust 代码、过于宽松的 scope 及 WebView 漏洞。窗口标签必须与 Rust 代码中创建窗口时的标签一致且区分大小写;权限被拒时需检查权限是否包含及窗口标签是否匹配;能力未生效时需确认文件位置或已在 tauri.conf.json 中列出。建议遵循最小权限原则,按窗口拆分能力,使用清晰标识并编写描述,审查远程访问,测试权限边界。