權限管理
在 Github 上編輯
有時,根據授予程序的權限狀態,我們會希望執行不同的操作。使用 Deno 權限 API 可以非常輕鬆地做到這一點。
在最簡單的情況下,我們可以僅按名稱請求權限。在本例中,我們請求 --allow-env 並提示使用者。如果過去已允許且未撤銷,則不會提示使用者。
let status = await Deno.permissions.request({ name: "env" });
if (status.state === "granted") {
console.log("'env' permission is granted.");
} else {
console.log("'env' permission is denied.");
}
所有權限 API 也都有同步版本
status = Deno.permissions.requestSync({ name: "env" });
if (status.state === "granted") {
console.log("'env' permission is granted.");
} else {
console.log("'env' permission is denied.");
}
我們也可以在不請求權限的情況下查詢權限。在本例中,我們查詢是否具有讀取權限。我們不僅可以查詢是否具有權限,甚至可以使用 path 選項指定我們具有權限的目錄。
const readStatus = await Deno.permissions.query({
name: "read",
path: "/etc",
});
console.log(readStatus.state);
在我們不再需要權限的情況下,也可以撤銷程序對該權限的存取權。當程序開始執行不受信任的程式碼時,這非常有用。
import { assert } from "jsr:@std/assert";
const runStatus = await Deno.permissions.revoke({ name: "run" });
assert(runStatus.state !== "granted");
使用 Deno CLI 在本地執行此範例
deno run https://deno-docs.dev.org.tw/examples/scripts/permissions.ts