npm 包 @devpodio/verdaccio-level-auth 使用教程

阅读时长 4 分钟读完

当我们需要发布自己的 npm 包到公共仓库,例如 npmjs.com,这时我们就需要选择并配置一个私有仓库,以保护我们的包不被公开访问或被篡改。其中,Verdaccio 是一个相对比较流行的选择,它是一个本地的、相对轻量级的 npm 仓库,可用于替代 npmjs.com。@devpodio/verdaccio-level-auth 是一个基于 Verdaccio 实现的插件,用于提供基于用户级别的访问控制。本文将详细介绍如何安装、配置和使用该插件。

安装

在已经安装好 Verdaccio 的环境中,使用以下命令安装 @devpodio/verdaccio-level-auth:

配置

激活插件

在 verdaccio 的配置文件 config.yml 中,将 auth 配置项设置为 @devpodio/verdaccio-level-auth,并配置 users

其中:

  • users 中配置了用户的用户名 (key),密码 (password) 及用户级别 (access);
  • access 表示每个用户名对应的用户级别,可自定义,例如此处为 admin
  • allow_adduser 表示是否允许添加新用户,该值默认为 false
  • enabled 表示 @devpodio/verdaccio-level-auth 是否启用,该值默认为 false

设置用户级别

在上述配置中,我们设置了 access,这是该插件提供的核心功能,用于实现基于用户级别的访问控制。例如:

-- -------------------- ---- -------
-----
  -------------------------------
    ------
      ------
        --------- -----------
        ------- -----
      ------
        --------- -----------
        ------- -----
    -------- ----

以上配置中,我们定义了两个用户,其中 user1 的级别为 adminuser2 的级别为 basic。当用户使用 user1 登录时,其拥有更高的操作权限,可以查看和修改更多的 npm 包。而当用户使用 user2 登录时,其操作权限更为有限,只能查看和修改一些基本的 npm 包信息。

测试

当配置完成后,我们可以在 Verdaccio 上进行测试。以上传包为例,您可以按如下步骤进行:

  1. 在本地新建一个 npm 包,例如 my-npm-package,并通过 npm login 命令登录到 Verdaccio 上;
  2. 通过 npm publish 命令将包上传到 Verdaccio 上;
  3. 使用 npm whoami 命令查看当前登录账号的用户名;
  4. 在 Verdaccio 的 web 界面中,在 users 选项卡中查看该用户名对应的用户级别;
  5. 在 Verdaccio 的 web 界面中,找到 my-npm-package 包,查看该用户是否有 readwrite 权限。

示例代码

以下是一个基于 @devpodio/verdaccio-level-auth 的示例配置文件:

-- -------------------- ---- -------
- ----------
-----
  -------------------------------
    ------
      ------
        --------- -----------
        ------- -----
      ------
        --------- -----------
        ------- -----
    -------- ----
---------
  -------
    ------- --------------
    -------- --------------
  -----
    ------- ----
    -------- --------------

总结

本文介绍了如何安装、配置和使用 @devpodio/verdaccio-level-auth,以实现基于用户级别的访问控制。需要注意的是,插件的级别配置和权限控制需要根据具体业务需求进行设置,以确保安全性和可用性。希望本文能够对使用 Verdaccio 的开发者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b6151ab1864dac672ff

纠错
反馈