## 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
* 安裝完成后,若要測試接口權限相關信息,那么需要到后臺配置對應賬號的訪問權限。