跳转到内容
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"]
}

对象属性:

  • 描述
  • 标识符(必需)
  • 本地
  • 权限(必需)
  • 平台
  • 远程
  • Web 视图
  • Windows

描述

字符串

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

应包含对分组权限允许的内容的描述。

示例

此能力允许主窗口访问与文件系统相关的 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"]
}

Web 视图

字符串[]

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

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

示例

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

Windows

字符串[]

受此功能影响的窗口列表。可以是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 定义作用域内拒绝的数据。这应在验证逻辑中优先。

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

目标

以下之一:

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

目标平台。

以下任何一个:

  • null 代表一个null JSON值。
  • boolean 代表一个 [bool]。
  • Number 代表一个有效的ACL [Number]。
  • string 代表一个 [String]。
  • Value[] 代表其他 [Value]s 的列表。
  • 代表以 [String] 键到 [Value]s 映射的映射。 允许额外属性: Value

所有支持的ACL值。


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