功能
开发者可以用来隔离对 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
定义作用域允许的数据。 ##### denyValue
[] |null
定义作用域拒绝的数据。这应由验证逻辑优先考虑。 ##### identifierIdentifier
权限或权限集的标识符。
在 [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