权限
权限是对命令的明确特权的描述。
[[permission]]
identifier = "my-identifier"
description = "This describes the impact and more."
commands.allow = [
"read_file"
]
[[scope.allow]]
my-scope = "$HOME/*"
[[scope.deny]]
my-scope = "$HOME/secret"
它可以使命令在Tauri应用程序的前端中可访问。它可以映射作用域到命令,并定义哪些命令是启用的。权限可以启用或拒绝某些命令,定义作用域或两者结合。
权限可以作为一个集合分组在一个新的标识符下。这称为权限集。这允许您将作用域相关的权限与命令相关的权限结合起来。它还允许将特定于操作的权限分组或捆绑到更可用的集合中。
作为插件开发者,您可以为所有公开的命令提供多个预定义的、命名良好的权限。
作为应用程序开发者,您可以扩展现有的插件权限或为自己的命令定义权限。它们可以在一个集合中分组或扩展,以便重复使用或在以后简化主配置文件。
权限标识符
权限标识符用于确保权限可以重复使用并具有唯一的名称。
<name>:default
表示权限是插件或应用程序的默认权限<name>:<command-name>
表示权限是针对单个命令的
插件前缀tauri-plugin-
将在编译时自动添加到插件的标识符中,不需要手动指定。
标识符仅限于ASCII小写字母字符[a-z]
,标识符的最大长度目前限制为116
,由于以下常量:
const IDENTIFIER_SEPARATOR: u8 = b':';
const PLUGIN_PREFIX: &str = "tauri-plugin-";
// https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field
const MAX_LEN_PREFIX: usize = 64 - PLUGIN_PREFIX.len();
const MAX_LEN_BASE: usize = 64;
const MAX_LEN_IDENTIFIER: usize = MAX_LEN_PREFIX + 1 + MAX_LEN_BASE;
配置文件
简化示例Tauri插件目录结构:
tauri-plugin
├── README.md
├── src
│ └── lib.rs
├── build.rs
├── Cargo.toml
├── permissions
│ └── <identifier>.json/toml
│ └── default.json/toml
默认权限以特殊方式处理,只要使用Tauri CLI将插件添加到Tauri应用程序中,它就会自动添加到应用程序配置中。
对于应用程序开发者,结构类似:
tauri-app
├── index.html
├── package.json
├── src
├── src-tauri
│ ├── Cargo.toml
│ ├── permissions
│ └── <identifier>.toml
| ├── capabilities
│ └── <identifier>.json/.toml
│ ├── src
│ ├── tauri.conf.json
示例
文件系统
插件的示例权限。
[[permission]]
identifier = "scope-home"
description = """This scope permits access to all files and
list content of top level directories in the `$HOME`folder."""
[[scope.allow]]
path = "$HOME/*"
[[permission]]
identifier = "read-files"
description = """This enables all file read related
commands without any pre-configured accessible paths."""
commands.allow = [
"read_file",
"read",
"open",
"read_text_file",
"read_text_file_lines",
"read_text_file_lines_next"
]
[[permission]]
identifier = "allow-mkdir"
description = "This enables the mkdir command."
commands.allow = [
"mkdir"
]
在您的应用程序中扩展上述插件权限的示例实现:
[[set]]
identifier = "allow-home-read-extended"
description = """ This allows non-recursive read access to files and to create directories
in the `$HOME` folder.
"""
permissions = [
"fs:read-files",
"fs:scope-home",
"fs:allow-mkdir"
]
© 2024 Tauri中文网