verdaccio簡單的權限插件

本文僅是技術驗證,記錄,交流,不針對任何人。有冒犯的地方,請諒解。 該文首發於https://vsnail.cn/static/doc/blog/verdaccioPlugin.htmlhtml

背景

最近幾天用verdaccio搭建了npm私服,具體搭建過程能夠參見上一篇文章《 NPM 私服搭建》。在使用私服的過程當中,發現權限體系並不能很好的知足我的需求。所以在查閱文檔後,本身開發了一個小的權限插件。git

默認權限體系

verdaccio 的默認權限體系,使用了htpasswd做爲權限插件。該插件主要是解決"人"的問題,指定權限都是從"人"出發。所以對於分組,這個插件僅提供了$all$authenticated$anonymous三個分組。github

對權限的需求

由於公司劃分了幾個業務團隊,那麼須要按業務團隊作一些權限劃分,而且人數還比較多。若是按照人來設置,則比較麻煩。所以咱們須要可以按分組來進行權限設置。npm

verdaccio 插件

在翻閱了verdaccio的官方文檔,發現verdaccio是支持插件的。能夠經過重寫allow_accessallow_publishallow_unpublish方法,來實現權限的控制。這三個方法,都須要返回一個方法,而這個方法自動注入了三個參數user, pkg, callback函數

  • user 用戶信息。包含namegroups屬性。
  • pkg 包信息。包含nameaction屬性。
  • callback 回調函數。經過權限認證,執行的函數。

編寫verdaccio插件有一個特別須要注意的就是發佈出來的包名。包名必須爲verdaccio-**.post

編寫verdaccio-simplegroup插件

就像這個插件的名字同樣,一個及簡單的以'組'的粒度來爲verdaccio提供權限支撐的插件。插件

github地址:https://github.com/btshj-snail/snail-verdaccio-groupcode

npm包:verdaccio-simplegrouphtm

這裏面代碼是簡單的,所以也再也不表述了。blog

使用verdaccio-simplegroup插件

參見https://github.com/btshj-snail/snail-verdaccio-group/blob/master/README.md

相關文章
相關標籤/搜索