用途:本技能指导在 Tauri v2 应用中配置命令作用域,以细粒度控制命令与资源访问,属于应用安全配置范畴。
主要能力:区分 allow(允许)与 deny(拒绝)作用域,deny 优先;作用域配置写在 src-tauri/capabilities/default.json 及其他 *.json 能力文件中。文件系统插件用 glob 兼容路径模式限制访问;HTTP 插件用 URL 模式控制网络访问;还支持在 TOML 中为插件或自定义命令定义带作用域的权限,并组合成权限集。
路径变量:可用 $APPCONFIG、$APPDATA、$DOCUMENT、$HOME、$TEMP 等运行时注入变量。模式语法:* 匹配非路径分隔符字符,** 递归匹配含分隔符,? 匹配单字符,[abc] 匹配括号内字符。Tauri 会阻止路径穿越(如 ../)。
动态作用域:使用 tauri_plugin_fs::FsExt 在运行时修改作用域,例如 app_handle.fs_scope().allow_directory(&folder_path, true)、allow_file,或用 scope.allowed() 查看。
使用方式:能力文件示例含 identifier、windows、permissions 等字段;permissions 中可写 {"identifier":"fs:allow-read-text-file","allow":[{"path":"$DOCUMENT/**"}],"deny":[...]}。开发时用 pnpm tauri dev 或 cargo tauri dev 测试,权限错误会在控制台提示。
适用场景:需要限制读写文件、联网域名或远程 URL 访问权限,且希望用命令级而非全局作用域控制的应用。
限制与安全要点:命令实现方必须自行校验并强制执行作用域,否则可能被绕过;应最小化作用域、优先用命令专用作用域、显式 deny 敏感目录、动态扩展前验证路径,切勿基于未验证的用户输入扩展作用域,并优先使用路径变量而非硬编码。