跳到内容
Tauri

功能

开发者可以用来隔离对 IPC 层访问的分组和边界机制。

它控制应用程序窗口对 Tauri 核心、应用程序或插件命令的细粒度访问。如果窗口与任何功能都不匹配,则它根本无法访问 IPC 层。

可以这样做来创建窗口组,基于它们所需的系统访问权限,这可以减少权限较低的窗口中前端漏洞的影响。可以通过确切的名称(例如 main-window)或 glob 模式(如 *admin-*)将窗口添加到功能。一个窗口可以没有、一个或多个关联的功能。

示例

{
"identifier": "main-user-files-write",
"description": "This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.",
"windows": [
"main"
],
"permissions": [
"core:default",
"dialog:open",
{
"identifier": "fs:allow-write-text-file",
"allow": [{ "path": "$HOME/test.txt" }]
},
],
"platforms": ["macOS","windows"]
}

对象属性:

  • 描述
  • identifier (必需)
  • 本地
  • permissions (必需)
  • 平台
  • 远程
  • webview 视图
  • 窗口

描述

字符串

描述功能旨在允许在关联窗口上执行的操作。

它应包含对分组权限应允许的操作的描述。

示例

此功能允许 main 窗口访问 filesystem 写入相关命令和 dialog 命令,以启用对用户选择的文件进行编程访问。

标识符

字符串

功能的标识符。

示例

main-user-files-write

本地

布尔值

此功能是否为本地应用程序 URL 启用。默认为 true

默认值: true

权限

PermissionEntry[] 每个项目必须是唯一的

附加到此功能的权限列表。

必须在插件名称前缀中包含插件名称,格式为 ${plugin-name}:${permission-name}。对于直接在应用程序本身中实现的命令,仅需要 ${permission-name}

示例

[
"core:default",
"shell:allow-open",
"dialog:open",
{
"identifier": "fs:allow-write-text-file",
"allow": [{ "path": "$HOME/test.txt" }]
}
]

平台

Target[] | null

限制此功能适用的目标平台。

默认情况下,所有平台都是目标平台。

示例

["macOS","windows"]

远程

CapabilityRemote | null

配置可以使用功能权限的远程 URL。

此设置是可选的,默认情况下未设置,因为我们的默认用例是从本地应用程序提供内容。

示例

{
"urls": ["https://*.mydomain.dev"]
}

webview 视图

字符串[]

受此功能影响的 webview 视图列表。可以是 glob 模式。

仅在使用多 webview 视图上下文时才需要,默认情况下,与 [Self::windows] 匹配的窗口的所有子 webview 视图都已链接。

示例

["sub-webview-one", "sub-webview-two"]

窗口

字符串[]

受此功能影响的窗口列表。可以是 glob 模式。

在多 webview 视图窗口上,首选 [Self::webviews] 进行细粒度访问控制。

示例

["main"]

定义

CapabilityRemote

与功能关联的远程 URL 的配置。

对象属性:

  • urls (必需)
urls

字符串[]

此功能引用的远程域,使用 URLPattern 标准

示例
  • “https://*.mydomain.dev”:允许 mydomain.dev 的子域名
  • https://mydomain.dev/api/*”:允许 mydomain.dev/api 的任何子路径

标识符

字符串

数字

以下任何一种:

  • integer 格式为 int64 表示 [i64]。
  • number 格式为 double 表示 [f64]。

有效的 ACL 数字。

PermissionEntry

以下任何一种:

  • Identifier 通过标识符引用权限或权限集。
  • 通过标识符引用权限或权限集,并扩展其作用域。 对象属性: - allow - deny - identifier (必需) ##### allow Value[] | null 定义作用域允许的数据。 ##### deny Value[] | null 定义作用域拒绝的数据。这应由验证逻辑优先考虑。 ##### identifier Identifier 权限或权限集的标识符。

在 [Capability] 中的权限值的条目可以是原始权限 [Identifier] 或引用权限并扩展其作用域的对象。

目标

以下之一:

  • "macOS" MacOS。
  • "windows" Windows。
  • "linux" Linux。
  • "android" Android。
  • "iOS" iOS。

平台目标。

以下任何一种:

  • null 表示空 JSON 值。
  • boolean 表示 [bool]。
  • Number 表示有效的 ACL [Number]。
  • string 表示 [String]。
  • Value[] 表示其他 [Value] 的列表。
  • 表示 [String] 键到 [Value] 的映射。 允许其他属性: Value

所有受支持的 ACL 值。


© 2025 Tauri 贡献者。CC-BY / MIT