1. 安装完成后,接口方面,目前有三条逻辑可使用。
* **通过 token 验证用户 api 访问权限**
+ 示例接口为:api/apiexdemo/token
+ 此请求方法为基础权限管理逻辑,与fastadmin所携带的基础api权限验证相同。即需要在 后台管理 > 会员管理 > 会员规则管理 中,添加对应路由,之后,通过 会员组管理 设置对应会员组的访问权限。最后,将对应用户归属该组,则拥有对应权限。
* **通过 账号 验证用户 api 访问权限**
+ 示例接口为:api/apiexdemo/account
+ 此验证为 apiex 扩展 api 的效果之一,后台权限设置方法同token。只是在访问时,参数中,加入 is_token=’0’ ,从而启用非 token 验证。此验证开启后,推荐加入 authSign(自定义签名验证)
+ authSign 自定义签名验证设置方法:在对应控制器中,设置如下代码
```
protected $authSign = "服务端签名";
```
这样,就会使得匹配前台提交的 authSign 和 控制器中的 authSign 是否匹配。继而,再进行账号的权限验证。
+ 前端在参数中,加入如下示例:
```
param = {'auth_sign' => 'screen'},+
```
* **无需验证 api 访问权限**
+ 示例接口为:api/apiexdemo/noneedlogin
+ 此情景为fastadmin基础权限管理,只需要在对应控制器中,加入如下代码即可:
```
protected $noNeedLogin = '*';//设置无需登录验证
```
+ 安全起见,强烈不推荐使用此功能,尽量使用 **通过 账号 验证用户 api 访问权限**,方便对公共接口进行权限管理。
2. 在 **安装步骤** 中,给出了基于第三条api调用逻辑的使用示例。所以,这里,针对第二条调用方式 **通过 账号 验证用户 api 访问权限** ,给出使用示例,至于第一条调用方式,会在此类比说明。
* 以开发 cms 接口工具 - 栏目列表接口 为例
* 分为 后台(接口控制器)、路由、前台 三个部分进行说明
=======================后台(接口控制器)=======================
* 在进行接口开发的控制器中,继承 app\common\controller\Apiex
* 为了加强安全性,加入 签名字符串验证 ,即在接口对应控制器中,加入如下类
~~~
/**
* 栏目接口
*/
class Channel extends \app\common\controller\Apiex
{
protected $authSign = "cms"; //自定义的服务器端接口签名
}
~~~
* 如上两步操作即可完成接口的配置,对应 **通过 token 验证用户 api 访问权限** 的使用逻辑,接口控制器方面的设置是一模一样的。
=======================路由=======================
* 配置完控制器后,需要在对应路由配置文件中,加入对应的路由设置,若是有版本控制的接口,就需要到对应版本路由中进行路由配置。
* 下面给出 上述接口的路由配置示例
~~~
//配置 apiload 所指引的 接口路由规则
return [
//获取 cms 栏目列表信息
'api/cms/channellist' => ['api/cms.channel/getList', ['method' => 'post']],
];
~~~
* 配置完成后,由于此接口需要进行权限验证,因而,需要在后台管理中,添加此路由配置。如下图所示。
![](https://img.kancloud.cn/c6/bb/c6bb96bfa3c611871a613bc8815285a8_1920x1080.png)
* 后台添加路由配置后,需要将此路由配置权限分配到对应的用户组中,如下图所示,这里默认添加了一个新的用户组。路由为多级目录时,需要全小写,且使用 "/" 拼接路径。
![](https://img.kancloud.cn/5d/27/5d2781d8a8af02741a044385d55337d0_1920x1080.png)
* 用户组拥有路由权限后,需要将对应的用户设置为此用户组,从而拥有对应访问权限,如下图所示。这里默认添加了一个专门用于此接口权限验证的新前端用户,新用户账号 cms,用于接口请求。
![](https://img.kancloud.cn/60/ae/60aea5867f3888eb0337a323fea9ba91_1920x1080.png)
=======================前台=======================
* 前台请求方面,需要携带 **is_token** 参数,用于切换 账号 和 Token 两方面的验证机制。参数 is_token 有两个取值:字符串的 1 和 0,其中,1 代表使用 Token ,0 代表使用 账号 ,默认为 1。
* 对应账号的参数名为 account 。
* 另外,由于控制器中,配置了 **authSign(自定义接口签名验证)**,因而,在接口中,需要同时传输此签名信息,参数名为 auth_sign。
* 若有接口版本要求,则需要传入版本信息,参数名为 version。
* 前端请求方面,参考请求参数如下:
~~~
//接口地址
$url = 'http://www.xxxxxxx.club/api/cms/channellist';
//设置请求参数
$param = [
'version' => 'api_1.0.0', //指定api路由管理版本
'is_token' => 0, //不进行Token验证
'account' => 'cms', //权限账号
'auth_sign' => 'cms', //签名
];
$result = query($url, $param, 'POST');//执行post请求
~~~
* 其他
* 其他