这是一个为了解决yapi管理的项目接口需要做鉴权操作的插件,觉得可以给 star 的欢迎 star 一下,你的 star 是我前进的动力之一。
针对大多数项目来说,特别是现在的前后端分离的项目,接口通常也需要鉴权,这个插件目的就是为了解决自动获取鉴权token附加在请求上的功能。
- 简单易用
- 支持自动定时给所有接口加上一个特定的
Header
属性 - 支持多种请求方式和结果获取方式
- 修复获取路径中解析返回结果中多维数组的问题
- 支持 http url 使用自签名证书
- 修复获取路径中获取
header
简单字符串属性的错误
- 完善鉴权页面的配置,解决时长校验规则问题
- 支持配置更细粒度的鉴权请求执行时间,支持分钟级令牌刷新
- 修改校验成功无明显提示问题
- 修改
get_token_url
提交时候的bug
- 新增支持自定义请求
Header
- 解决插件的一些
bug
- 发布正式版本,支持
GET
、POST
等多种方式请求 - 支持定制化结果获取方式
要使用安装插件的yapi,需要先安装
yapi-cli
npm install yapi-cli -g
yapi plugin --name yapi-plugin-interface-oauth2-token
我的升级过程不一定是最好的方法
-
修改
package.json
和package-lock.json
中的yapi-plugin-interface-oauth2-token
的版本号为1.2.3
-
删除
node_modules
,然后重新npm install
-
然后先卸载插件,再重新安装插件
yapi unplugin --name yapi-plugin-interface-oauth2-token
yapi plugin --name yapi-plugin-interface-oauth2-token
如果安装中报错可以使用我提供的 node_modules.tar.gz
,下载下来解压到你的 yapi 的 node_modules
目录,这个压缩包针对 Linux 和 Node 13 版本
tar -zvxf node_modules.tar.gz
#记得把 ./yapi 替换成你真正的目录,必须使用 /bin/cp,不然 -f 参数不会生效
/bin/cp -rf node_modules ./yapi/vendors/
# 执行完成之后在 vendors 执行如下命令
ykit pack -m
# 现在就可以使用命令启动了
node server/app.js
进入项目设置页面,可以看到接口自动鉴权的Tab页
根据不同的环境配置不同的获取token的方式
- 环境名称: 对应环境配置的列表
- 获取
token
的地址: 获取 token 的地址,可以是GET
请求或者是POST
请求 token
有效小时: 我会以定时任务的方式重新获取token
- 请求头字段: 将获取到的结果放入这个环境的哪个
Header
字段,比如我这里选择了Authorization
,将会把获取到的token
保存到这个属性里 - 获取路径
- 比如你要获取请求体里面的内容,就是
data.xxx
,记得以data
开头获取请求体内容 - 如果是获取
header
的内容请使用header.yyy
,可以使用+
作为连接符 - 获取返回结果中的内容请使用
body.xxx
- 比如你要获取请求体里面的内容,就是
关于token请求地址的结果获取:
目前我考虑到的场景如下,我会把接口返回数据中的 token_type
和 access_token
以空格分隔连接起来,所以我会写获取路径是 body.token_type + " " + body.access_token
,
{
"access_token": "27c72286-a4d7-42bc-adef-80980c234494",
"token_type": "bearer",
"refresh_token": "565399c9-a3f3-4594-8460-3194d952b708",
"expires_in": 28799,
"scope": "webapp"
}
结果如图:
不论你使用什么启动的 YApi
,你需要重新启动下
如果遇到安装失败的情况,请先用下面的命令卸载插件
yapi unplugin --name yapi-plugin-interface-oauth2-token
进入 vendors
目录,执行如下命令手动安装 node-sass
npm install node-sass
修改 package.json
和 package-lock.json
的版本号,再重新安装插件,目前最新版本为 1.2.3
yapi plugin --name yapi-plugin-interface-oauth2-token