本文僅是技術驗證,記錄,交流,不針對任何人。有冒犯的地方,請諒解。 該文首發於https://vsnail.cn/static/doc/blog/verdaccioPlugin.htmlhtml
最近幾天用verdaccio
搭建了npm
私服,具體搭建過程能夠參見上一篇文章《 NPM 私服搭建》。在使用私服的過程當中,發現權限體系並不能很好的知足我的需求。所以在查閱文檔後,本身開發了一個小的權限插件。git
verdaccio
的默認權限體系,使用了htpasswd
做爲權限插件。該插件主要是解決"人"的問題,指定權限都是從"人"出發。所以對於分組,這個插件僅提供了$all
,$authenticated
,$anonymous
三個分組。github
由於公司劃分了幾個業務團隊,那麼須要按業務團隊作一些權限劃分,而且人數還比較多。若是按照人來設置,則比較麻煩。所以咱們須要可以按分組來進行權限設置。npm
在翻閱了verdaccio
的官方文檔,發現verdaccio
是支持插件的。能夠經過重寫allow_access
、allow_publish
、allow_unpublish
方法,來實現權限的控制。這三個方法,都須要返回一個方法,而這個方法自動注入了三個參數user
, pkg
, callback
。函數
user
用戶信息。包含name
、groups
屬性。pkg
包信息。包含name
、action
屬性。callback
回調函數。經過權限認證,執行的函數。編寫verdaccio
插件有一個特別須要注意的就是發佈出來的包名。包名必須爲verdaccio-**
.post
verdaccio-simplegroup
插件就像這個插件的名字同樣,一個及簡單的以'組'的粒度來爲verdaccio
提供權限支撐的插件。插件
github
地址:https://github.com/btshj-snail/snail-verdaccio-group
code
npm
包:verdaccio-simplegroup
htm
這裏面代碼是簡單的,所以也再也不表述了。blog
verdaccio-simplegroup
插件參見https://github.com/btshj-snail/snail-verdaccio-group/blob/master/README.md
。