## 1. 安装及测试使用
* 下载 APIEX JWT版 压缩包,或者 克隆项目后,自己手动压缩,注意,压缩时,要求项目必须处于压缩包的一级目录下,不能在外部再包裹一层文件夹。至此,一个 APIEX JWT版 离线插件包就完成了。
* 按照 fastadmin 框架手册说明,安装 并 运行 fastadmin 框架后,进入后台,点击左侧目录 **插件管理** ,在右侧插件列表上方,点击 **离线安装** ,选择 APIEX JWT版 离线插件包进行安装即可。
* 安装完成后,需要在 \application\config.php 配置文件 中,对应路由管理的配置信息中,加入 APIEX JWT版 专用路由配置,如下代码效果。
```
// 路由配置文件(支持配置多个)
'route_config_file' => ['route', 'apiload'],
//若使用 fastadmin V1.0.0.20200506_beta 以后的版本,则需要开启域名部署,才能开启路由功能
'url_domain_deploy' => true,
```
* 可以访问如下信息,测试接口扩展插件是否成功安装。
* http://www.xxxxx.com/api/apiexdemo/noneedlogin
* 示例成功结果如下:
```
{
"code": 1,
"msg": "apiex路由请求成功",
"time": "1599552982",
"data": null
}
```
* 在示例接口中,加入了三种情况接口示例,分别如下:
* 当通过 token 验证用户 api 访问权限
* 示例接口为:api/apiexdemo/token
* 此请求方法为基础权限管理逻辑,与fastadmin所携带的基础api权限验证相同。即需要在 后台管理 => 会员管理 => 会员规则管理 中,添加路由,之后,通过 会员组管理 设置对应会员组的访问权限。最后,将对应用户归属该组,则拥有对应权限。
* 前端在请求此接口时,需要加入如下参数:
```
//token 参数可以随着 get 、post 、header 参数提交
token: d2c46c45-9a71-458b-a47d-51acf00a00dc
```
* 当通过 账号 验证用户 api 访问权限
* 示例接口为:api/apiexdemo/account
* 此验证为 apiex 扩展 api 效果,即:jwt验权,后台权限设置方法同token,然后在控制器中开启 jwt 验证,在访问时 header 中加入 Authrization: Bearer xxxx(jwt) 。jwt验证开启后,推荐在 apiex jwt 插件配置中,设置对应的自定义加密秘钥字符串和过期时间等。
* 验证设置方法:在对应控制器中,设置如下代码
```
protected $jwtAuth = true; //开启 jwt 验证
```
* 前端在header参数中,配置如下参数:
```
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1OTk0NjQwNjMsIm5iZiI6MTU5OTQ2NDA2MywiZXhwIjoxNTk5NDY3NjYzLCJkYXRhIjp7InVpZCI6IjJiYmE0ZDc3MjNkYmRiMWYzOTZhMGIwNzY3MWJiODczIiwiYWNjb3VudCI6ImFkbWluIn0sImlydCI6MH0.Vcq6CglPuHIiGAKHQcKxUrjc0vGdYvxUtS01KxFuzA4
```
* 测试示例如下:
```
//本测试为 vscode 的 rest client 插件对应的 api 测试文件,若使用 vscode ,则可以安装 rest client 插件后,使用本测试文档
//header参数 和 body参数 之间,一定要留一条空
###
GET http://www.test.club/api/apiexdemo/noneedlogin HTTP/1.1
Content-Type:application/json
{
}
###
POST http://www.test.club/api/apiexdemo/account HTTP/1.1
content-type:application/json
Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1OTk1NDU0NjIsIm5iZiI6MTU5OTU0NTQ2MiwiZXhwIjoxNTk5NTQ5MDYyLCJkYXRhIjp7InVpZCI6IjJiYmE0ZDc3MjNkYmRiMWYzOTZhMGIwNzY3MWJiODczIiwiYWNjb3VudCI6ImFkbWluIn0sImlydCI6MH0.u0-y5-R8lbWjnJtUk6Z58zoOumf0AZ\_szeqwa1LdiaM
{
"test": "123"
}
###
POST http://www.test.club/api/jwt/create/user HTTP/1.1
content-type:application/json
{
"account": "admin",
"password": "123456"
}
###
POST http://www.test.club/api/jwt/create/user HTTP/1.1
content-type:application/json
{
"account": "admin",
"password": "123456",
"isRefreshTokenKeepLive": 1
}
###
POST http://www.test.club/api/jwt/refresh HTTP/1.1
content-type:application/json
{
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1OTk0NjM5MDUsIm5iZiI6MTU5OTQ2MzkwNSwiZGF0YSI6eyJ1aWQiOiIyYmJhNGQ3NzIzZGJkYjFmMzk2YTBiMDc2NzFiYjg3MyIsImFjY291bnQiOiJhZG1pbiJ9LCJpcnQiOjF9.3kH1ok5ahdl8L3rQvhcKxmzL3mH1X6Gjbr9q-cS9kgE"
}
```
* 若产生的 refresh\_token 为永久有效的,则在后台中,可以控制其是否生效,理论上讲,每个账号只能有一个永久有效的 refresh\_token。若用户修改了用户名或密码,则在生成新的永久有效的 refresh\_token 时,会默认关闭其他属于此账号的 永久refresh\_token。这样的好处是,在一定程度上,防止由于永久 refresh\_token 外泄,导致无法取消其权限的安全隐患。
* 当 无需验证 api 访问权限
* 示例接口为:api/apiexdemo/nologin
* 此情景为fastadmin基础权限管理,只需要在对应控制器中,加入如下代码即可:
```
protected $noNeedLogin = '*';//设置无需登录验证
```
* 安全起见,强烈不推荐使用此功能,尽量使用 “当通过 账号 验证用户 api 访问权限”,方便对公共接口进行权限管理。
## 2. 相关下载地址:
* fastadmin框架文档:[https://doc.fastadmin.net/docs/index.html](https://doc.fastadmin.net/docs/index.html)
* apiex jwt版 插件码云地址:[https://gitee.com/index103000/fastadmin\_addons\_apiex\_jwt](https://gitee.com/index103000/fastadmin_addons_apiex_jwt)
## 3. 注意事项:
#### APIEx插件在安装时,会安装一个示例接口,推荐在测试完成后,删除示例相关的接口信息。
* 示例接口文件路径如下:\application\api\controller\apiexdemo
* apidemo 为示例 api 控制器目录,在安装 APIEx 插件时,会自动安装此示例,此示例可用于测试是否可以正常使用接口。
* 另外,对应的示例路由信息配置的对应路径如下:
+ \application\api\apiroute.php
+ \application\api\version\api\1.0.0\apiroute.php
* 安装完成后,若要测试接口权限相关信息,那么需要到后台配置对应账号的访问权限。