deno.com

权限管理

有时,我们希望根据进程被授予的权限状态来执行不同的操作。Deno 的权限 API 让这变得非常容易。

在最简单的情况下,我们可以通过权限名称请求权限。在这种情况下,我们请求 `-E` 并提示用户。如果过去已允许且未撤销,则不会提示用户。
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://docs.deno.org.cn/examples/scripts/permissions.ts

您找到所需内容了吗?

隐私政策