跳转到内容
Tauri

权限

权限是对命令的明确特权的描述。

        
          
[[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

示例

文件系统插件的示例权限。

plugins/fs/permissions/autogenerated/base-directories/home.toml
        
          
[[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/*"
plugins/fs/permissions/read-files.toml
        
          
[[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"
]
plugins/fs/permissions/autogenerated/commands/mkdir.toml
        
          
[[permission]]
identifier = "allow-mkdir"
description = "This enables the mkdir command."
commands.allow = [
"mkdir"
]

在您的应用程序中扩展上述插件权限的示例实现:

my-app/src-tauri/permissions/home-read-extends.toml
        
          
[[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中文网

备案号:赣ICP备2020014263号-10