【问题标题】:NPM read-only tokens keep getting deletedNPM 只读令牌不断被删除
【发布时间】:2021-10-26 00:08:18
【问题描述】:

为什么我的只读令牌不断从 npm 的站点中删除?

复制步骤:

我使用 npm 的门户网站创建了一个新的只读令牌:

创建成功。

然后我将令牌存储在我的命令行配置中(在我的情况下为.zshrc

export NPM_TOKEN=f00ba4ba-2f00-ba4b-a2f0-0ba4ba2f00ba

并在我的.npmrc(在我的项目文件夹中)中引用它。

这很好用。 npm whoami 按预期工作,我可以从我们的私人仓库中提取。

……一会儿……

过了一会儿,它就消失了。从我们的私人仓库中提取失败并显示404npm whoami 返回 402。令牌从 npm Web 界面中消失了。

我想也许他们有一个小时的生命周期,但我看不到任何地方的文档说他们有任何过期时间。

是否有 npm 命令会产生删除身份验证令牌的副作用?

提前致谢!

【问题讨论】:

    标签: npm auth-token


    【解决方案1】:

    我想通了。我一定是在某个时候从命令行运行了npm logout

    关于npm loginlogout 工作原理的一些背景信息:

    当您运行npm login 时,它会创建一个“发布”令牌并将其存储在您的.npmrc 在您用户的主目录中

    当您运行npm logout 时,它会破坏该令牌;将其从 npm 的身份验证系统中删除,并从您的主文件夹中的 .npmrc 中删除。

    但值得深入挖掘一下 npm auth 的工作原理。

    当您从命令行执行任何需要 npm 授权的操作时,它首先查看项目目录中的 .npmrc 以查看其中是否有授权令牌。如果有,它会在检查 npm auth 服务器时使用它。只有当.npmrc 中没有身份验证令牌时,它才会检查用户主文件夹中的.npmrc。 (我敢肯定它比这更复杂;我只是说,它会先检查项目文件夹,然后再检查您的主文件夹)。

    但是当你运行npm logout 时它会做同样的事情。如果您的项目文件夹中的 .npmrc 中有一个身份验证令牌,它会假定这是您的身份,并使该令牌无效。

    所以,这就是发生在我身上的事,我相信。

    1. 我在我的项目文件夹中引用了.npmrc 中的令牌。
    2. 我在某个时候跑了npm logout。 (我不记得我为什么这样做了,但我一定有——我已经复制了这种行为)。
    3. 当我运行logout时,npm 使用我项目文件夹中的令牌作为我的身份,并使令牌无效。它不在乎它是“只读”令牌而不是“发布”令牌。它也不关心令牌是通过门户网站手动生成的,而不是通过 cli 以编程方式生成的。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2017-02-14
      • 2021-03-18
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多