我希望为每个客户端托管一个npm包,并将这些包发布到一个私有的Verdaccio示例中。我还希望ClientA只能访问包A,而不能访问ClientB的包。
"我该怎么做"
我目前的计划是在每次获得新客户端时编辑配置文件,然后重新启动服务器。
packages:
"@my-repo/client-a-*":
access: admin client-a
publish: admin
然后,我得到ClientB,并将文件编辑为如下所示,然后重新启动服务器:
packages:
"@my-repo/client-a-*":
access: admin client-a
publish: admin
"@my-repo/client-b-*":
access: admin client-b
publish: admin
我认为这将允许客户端A对客户端a的包具有只读访问权限,然后客户端B将对客户端b的包具有只读访问权限。您认为这可行吗?Edit:我确认上述方法确实有效,但这是一种繁琐的手动解决方案。
好的-现在,我可以用regex来简化这个过程吗?我可以用组名或regex来匹配客户端名称和它们的包目录吗?它可能看起来像这样(* 下面的配置是猜测 *):
packages:
"@my-repo/$userId-*":
access: admin $userId
publish: admin
所以,在这个规则中$userId
作为一个变量,它将导致每个注册用户只能访问以他们自己的用户名前缀发布的包。这可能吗?我该怎么做?
编辑:不可能。请参阅下面的答案。
1条答案
按热度按时间tvz2xvvm1#
不支持将多个用户分组到一个“组”中,根据核心维护者本人的此主题和评论(2018年9月):
这是不可能的方式,目前,用户===组。所以,你必须定义所有用户都允许在每个部分(访问,发布)。
然而,似乎至少有一小部分开发人员已经在寻找这种类型的解决方案:
因此,我只需要繁琐地编辑配置文件来添加/删除用户和包。幸运的是,Docker使重新启动服务变得非常容易。