@@ -9,6 +9,7 @@ import Compatibility from '@components/plugins/Compatibility.astro';
9
9
10
10
import { Steps , Tabs , TabItem } from ' @astrojs/starlight/components' ;
11
11
import CommandTabs from ' @components/CommandTabs.astro' ;
12
+ import PluginPermissions from ' @components/PluginPermissions.astro' ;
12
13
13
14
<PluginLinks plugin = { frontmatter .plugin } />
14
15
@@ -33,6 +34,7 @@ import CommandTabs from '@components/CommandTabs.astro';
33
34
yarn = " yarn run tauri add stronghold"
34
35
pnpm = " pnpm tauri add stronghold"
35
36
bun = " bun tauri add stronghold"
37
+ deno = " deno task tauri add stronghold"
36
38
cargo = " cargo tauri add stronghold"
37
39
/>
38
40
</TabItem >
@@ -66,6 +68,7 @@ import CommandTabs from '@components/CommandTabs.astro';
66
68
npm = " npm install @tauri-apps/plugin-stronghold"
67
69
yarn = " yarn add @tauri-apps/plugin-stronghold"
68
70
pnpm = " pnpm add @tauri-apps/plugin-stronghold"
71
+ deno = " deno add npm:@tauri-apps/plugin-stronghold"
69
72
bun = " bun add @tauri-apps/plugin-stronghold"
70
73
/>
71
74
@@ -76,8 +79,39 @@ import CommandTabs from '@components/CommandTabs.astro';
76
79
77
80
## 用法
78
81
82
+ 该插件必须使用密码哈希函数进行初始化,该函数接收密码字符串,并必须返回由其派生的 32 字节哈希值。
83
+
84
+ ### 使用 argon2 密码散列函数初始化
85
+
86
+ Stronghold 插件提供了一个默认的哈希函数,使用的是 [ argon2] 算法。
87
+
88
+ ``` rust title="src-tauri/src/lib.rs"
89
+ use tauri :: Manager ;
90
+
91
+ pub fn run () {
92
+ tauri :: Builder :: default ()
93
+ . setup (| app | {
94
+ let salt_path = app
95
+ . path ()
96
+ . app_local_data_dir ()
97
+ . expect (" could not resolve app local data path" )
98
+ . join (" salt.txt" );
99
+ app . handle (). plugin (tauri_plugin_stronghold :: Builder :: with_argon2 (& salt_path ). build ())? ;
100
+ Ok (())
101
+ })
102
+ . run (tauri :: generate_context! ())
103
+ . expect (" error while running tauri application" );
104
+ }
105
+ ```
106
+
79
107
### 使用自定义密码散列函数初始化
80
108
109
+ 或者,您也可以通过使用 ` tauri_plugin_stronghold::Builder::new ` 构造函数来提供您自己的哈希算法。
110
+
111
+ :::note
112
+ 密码哈希值必须恰好包含 32 个字节。这是 Stronghold 的要求。
113
+ :::
114
+
81
115
``` rust title="src-tauri/src/lib.rs"
82
116
pub fn run () {
83
117
tauri :: Builder :: default ()
@@ -108,34 +142,17 @@ pub fn run() {
108
142
}
109
143
```
110
144
111
- ### 使用 argon2 密码散列函数初始化
112
-
113
- ``` rust title="src-tauri/src/lib.rs"
114
- use tauri :: Manager ;
115
-
116
- pub fn run () {
117
- tauri :: Builder :: default ()
118
- . setup (| app | {
119
- let salt_path = app
120
- . path ()
121
- . app_local_data_dir ()
122
- . expect (" could not resolve app local data path" )
123
- . join (" salt.txt" );
124
- app . handle (). plugin (tauri_plugin_stronghold :: Builder :: with_argon2 (& salt_path ). build ())? ;
125
- Ok (())
126
- })
127
- . run (tauri :: generate_context! ())
128
- . expect (" error while running tauri application" );
129
- }
130
- ```
131
-
132
145
### 在 JavaScript 使用
133
146
134
147
Stronghold 插件可以在 JavaScript 中使用。
135
148
136
149
``` javascript
137
150
import { Client , Stronghold } from ' @tauri-apps/plugin-stronghold' ;
151
+ // 当设置 `"withGlobalTauri": true` 时,你可以用
152
+ // const { Client, Stronghold } = window.__TAURI__.stronghold;
138
153
import { appDataDir } from ' @tauri-apps/api/path' ;
154
+ // 当设置 `"withGlobalTauri": true` 时,你可以用
155
+ // const { appDataDir } = window.__TAURI__.path;
139
156
140
157
const initStronghold = async () => {
141
158
const vaultPath = ` ${ await appDataDir ()} /vault.hold` ;
@@ -189,50 +206,17 @@ await store.remove(key);
189
206
190
207
## 权限
191
208
192
- 默认情况下,所有插件命令都被阻止,无法访问。你必须在你的 ` capabilities ` 配置中定义一个权限列表 。
209
+ 默认情况下,所有具有潜在危险的插件命令和范围都会被阻止且无法访问。您必须修改 ` capabilities ` 文件夹中的配置来启用它们 。
193
210
194
- 更多信息请参见 [ 访问控制列表 ] ( /zh-cn/reference/acl/ ) 。
211
+ 参见 [ 能力概览 ] ( /zh-cn/security/capabilities/ ) 以获取更多信息,以及插件的 [ 分步导览 ] ( /zh-cn/learn/security/using-plugin-permissions/ ) 来调整插件权限 。
195
212
196
213
``` json title="src-tauri/capabilities/default.json" ins={8-14}
197
214
{
198
- "$schema" : " ../gen/schemas/desktop-schema.json" ,
199
- "identifier" : " main-capability" ,
200
- "description" : " Capability for the main window" ,
201
- "windows" : [" main" ],
215
+ ...,
202
216
"permissions" : [
203
- " path:default" ,
204
- " stronghold:allow-initialize" ,
205
- " stronghold:allow-create-client" ,
206
- " stronghold:allow-load-client" ,
207
- " stronghold:allow-save" ,
208
- " stronghold:allow-save-store-record"
209
- " stronghold:allow-get-store-record" ,
210
- " stronghold:allow-remove-store-record" ,
217
+ " stronghold:default" ,
211
218
]
212
219
}
213
220
```
214
221
215
- | 权限 | 描述 |
216
- | -------------------------------------- | ------------------------------------------------------------- |
217
- | ` stronghold:allow-create-client ` | 在没有预先配置的作用域的情况下启用 create_client 命令。 |
218
- | ` stronghold:deny-create-client ` | 拒绝没有任何预配置范围的 create_client 命令。 |
219
- | ` stronghold:allow-destroy ` | 在没有预先配置的作用域的情况下启用 destroy 命令。 |
220
- | ` stronghold:deny-destroy ` | 拒绝没有任何预配置范围的 destroy 命令。 |
221
- | ` stronghold:allow-execute-procedure ` | 在没有预先配置的作用域的情况下启用 execute_procedure 命令。 |
222
- | ` stronghold:deny-execute-procedure ` | 拒绝没有任何预配置范围的 execute_procedure 命令。 |
223
- | ` stronghold:allow-get-store-record ` | 在没有预先配置的作用域的情况下启用 get_store_record 命令。 |
224
- | ` stronghold:deny-get-store-record ` | 拒绝没有任何预配置范围的 get_store_record 命令。 |
225
- | ` stronghold:allow-initialize ` | 在没有预先配置的作用域的情况下启用 initialize 命令。 |
226
- | ` stronghold:deny-initialize ` | 拒绝没有任何预配置范围的 initialize 命令。 |
227
- | ` stronghold:allow-load-client ` | 在没有预先配置的作用域的情况下启用 load_client 命令。 |
228
- | ` stronghold:deny-load-client ` | 拒绝没有任何预配置范围的 load_client 命令。 |
229
- | ` stronghold:allow-remove-secret ` | 在没有预先配置的作用域的情况下启用 remove_secret 命令。 |
230
- | ` stronghold:deny-remove-secret ` | 拒绝没有任何预配置范围的 remove_secret 命令。 |
231
- | ` stronghold:allow-remove-store-record ` | 在没有预先配置的作用域的情况下启用 remove_store_record 命令。 |
232
- | ` stronghold:deny-remove-store-record ` | 拒绝没有任何预配置范围的 remove_store_record 命令。 |
233
- | ` stronghold:allow-save ` | 在没有预先配置的作用域的情况下启用 save 命令。 |
234
- | ` stronghold:deny-save ` | 拒绝没有任何预配置范围的 save 命令。 |
235
- | ` stronghold:allow-save-secret ` | 在没有预先配置的作用域的情况下启用 save_secret 命令。 |
236
- | ` stronghold:deny-save-secret ` | 拒绝没有任何预配置范围的 save_secret 命令。 |
237
- | ` stronghold:allow-save-store-record ` | 在没有预先配置的作用域的情况下启用 save_store_record 命令。 |
238
- | ` stronghold:deny-save-store-record ` | 拒绝没有任何预配置范围的 save_store_record 命令。 |
222
+ <PluginPermissions plugin = { frontmatter .plugin } />
0 commit comments