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

相关文章
相关标签/搜索