我想為我的每個客戶托管一個 npm 包,并且我想將這些包發布到一個私有 Verdaccio 實體。我還希望 ClientA 只能訪問包 A,而不能訪問 ClientB 的包。
我怎樣才能做到這一點?
我目前的計劃是每次獲得新客戶端時只需編輯組態檔,然后重新啟動服務器。所以,這就是該檔案現在的樣子:
packages:
"@my-repo/client-a-*":
access: admin client-a
publish: admin
unpublish: admin
然后我得到 ClientB 并編輯檔案使其看起來像這樣并重新啟動服務器:
packages:
"@my-repo/client-a-*":
access: admin client-a
publish: admin
unpublish: admin
"@my-repo/client-b-*":
access: admin client-b
publish: admin
unpublish: admin
我認為這將允許 ClientA 對 client-a 包具有只讀訪問權限,然后 ClientB 將對 client-b 包具有只讀訪問權限。你認為這會奏效嗎?編輯:我確認上述方法確實有效,盡管這是一種乏味且手動的解決方案。
好的 - 現在,我可以用正則運算式簡化這個嗎?我可以使用組名或正則運算式將客戶端名稱與其包目錄匹配嗎?它可能看起來像這樣(下面的配置是一個猜測):
packages:
"@my-repo/$userId-*":
access: admin $userId
publish: admin
unpublish: admin
因此,在此規則中$userId
充當變數,這將導致每個注冊用戶只能訪問以他們自己的用戶名前綴發布的包。這可能嗎,我該怎么辦?
編輯:不,這是不可能的。請參閱下面的答案。
uj5u.com熱心網友回復:
不支持將多個用戶分組到一個“組”中,根據核心維護者本人的此執行緒和評論(2018 年 9 月):
這是不可能的,目前,用戶 === 組。因此,您必須定義每個部分(訪問、發布)中允許的所有用戶。
但是,似乎至少有一小部分開發人員已經搜索過這種型別的解決方案,并且至少有一個包可以作為 Verdaccio 插件執行此操作:snail-verdaccio-groups。
所以,我只需要繁瑣地編輯組態檔,以專門為他們添加/洗掉用戶和包。幸運的是,Docker 讓重啟服務變得非常容易。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523249.html
標籤:验证npm韦尔达乔