# 开放接口权限

针对提供给开发者的开放接口API，PhalApi Pro设计了一套完善的权限控制体系，可在不同维度进行灵活的权限控制。  

## 接口权限规则

从开发者账号类型为起点，开发者账号类型分为个人开发者、企业开发者等多种开发者类型；每种开发者账号类型下可注册多个开发者；而每个开发者可以创建多个应用；每个应用可以调用多个开放接口API。因此，整体的结构如下：  

![](http://cdn7.okayapi.com/yesyesapi_20200409154500_0442e1dde533dc2868ba4d2aec6e1bea.png)  

## 授权项目

授权项目，主要是针对开放接口，对应```App.*.*```系列接口，如果需要管理其他系列的接口，可以手动添加。  

![](http://cdn7.okayapi.com/yesyesapi_20200409154617_68d427a3daafcefd812c5a35eda9f7e9.png)

位于App命名空间下的接口，会自动纳入接口权限管理，因此推荐在App下扩展添加新的开放接口。  

## 授权对象

> 温馨提示：管理员账号下的全部应用，拥有全部接口权限。接口权限，主要针对开发者进行权限分配。  

### 开发者应用维度
授权对象主要是针对开发者的客户端应用，因为使用开放接口的主要对象是程序。每个开发者应用都有一个唯一的app_key，因此通过对app_key维度可进行接口权限的控制。

### 开发者账号维度
每个开发者应用最多可属于一位开发者，因此也可以通过开发者账号进行接口权限控制。  

### 账号类型维度
最后，可以对开发者的账号类型统一进行角色权限。  

因此，接口权限的授权对象可以分为：开发者应用、开发者账号和账号类型三个维度。  

## 授权优先级

根据前面的维度，对于接口权限的优先级，最高到低，依次是：  

> 开发者应用接口权限 -> 开发者账号接口权限 -> 账号类型接口权限 -> 默认开放接口权限  
 
 + 最高：开发者应用接口权限，通过app_key匹配规则库
 + 开发者账号接口权限，通过账号ID匹配规则库
 + 账号类型接口权限，通过账号等级匹配规则库
 + 最低：默认开放接口权限，通过```default_app_api_rigths_is_allow```配置项指定
 
按优先级从高到低，依次寻找权限规则，命中即生效，进行短路判断。  
 
> 再次温馨提示：管理员账号下的全部应用，拥有全部接口权限。接口权限，主要针对开发者进行权限分配。所以，管理员所创建的应用，只适合内部使用。   

## 接口权限规则配置

进入管理后台，可进行各个维度的接口权限配置。  

## 如何取消接口权限判断？  

如果需要取消全部接口的权限判断，可以修改```default_app_api_rigths_is_allow```配置为true，但不推荐。  

如果需要取消某个接口的权限判断，可以在PHP代码中配置白名单，此部分将会在技术文档进行说明。查看[接口白名单配置文档](http://docs.phalapi.net/#/v2.0/filter?id=%e7%99%bd%e5%90%8d%e5%8d%95%e9%85%8d%e7%bd%ae)。  
