Persisted Scope で権限状態を維持する

Recipe ID: plugin-013

ユーザーがダイアログで許可したファイルやフォルダへのアクセス権は、通常アプリを終了するとリセットされます。tauri-plugin-persisted-scope を使用すると、これらの許可状態を永続化し、次回起動時にもアクセス可能な状態を維持できます。

前提条件

Permissions (権限) の設定

src-tauri/capabilities/default.json に以下の権限を追加します。

{
    "permissions": [
        ...,
        "persisted-scope:default"
    ]
}

1. セットアップ

このプラグインは Rust 側のみで動作します(フロントエンド用パッケージはありません)。

npm run tauri add persisted-scope

src-tauri/src/lib.rs:

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_persisted_scope::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

3. 動作

プラグインを有効にするだけで自動的に機能します。
1. tauri-plugin-dialogopen 関数などでユーザーがファイルを選択する。
2. Tauri のスコープ(許可リスト)にそのファイルが追加される。
3. tauri-plugin-persisted-scope がその状態をデータファイルに保存する。
4. 次回起動時、プラグインが保存されたスコープを復元する。

これにより、例えば「最近開いたファイル」機能などを実装する際に、再度ユーザーに許可を求めずにファイルを開くことができます。

注意点

  • スコープデータはアプリのデータディレクトリ内の scope.json (または類似のファイル) に保存されます。
  • セキュリティ上の理由から、過度に広い範囲(ホームディレクトリ全体など)を永続化することは避けるべきです(通常ダイアログで単一ファイルを選ぶ分には問題ありません)。