# 一、背景介绍
后台接口文档地址:[https://user.api.it120.cc/doc.html](https://user.api.it120.cc/doc.html)
“api工厂”后台,本质上就是调用的后台api接口来实现后台的数据管理,后台的所有api接口,需要管理员权限才能调用,所以在调用后台的任何接口之前,必须要先获得授权。【所以后台需要先登录的原因】
针对不同的业务场景,下面介绍几种不同的业务场景下如何调用后台api接口的方法:
# 二、受信任场景中使用 Basic Authentication 免登陆调用后台接口
如果你在自己的笔记本电脑、服务器等受保护设备调用接口,不存在别人接触您的使用设备的情形。你可以通过 Basic Authentication 的方式,写死并固定鉴权 Authorization ,这样可以任意调用后台的任何api接口。
具体说明文档:[《Basic Authentication 免登陆调用后台接口》](https://www.yuque.com/apifm/doc/guzeid)
**请务必知悉:Authorization 确保是保存在受信任并保护的设备上,千万不可泄露,比如切不可将Authorization暴露在用户手机端、网页js代码、甚至发送给别人!Authorization 泄露,将可能导致恶意用户通过该Authorization调用你后台的删除api接口,将你的数据全部删除。**
# 三、在非信任场景下使用
非信任场景指的是,访问接口的设备不是你可控的设备,例如:
1. “api工厂”后台,用户在自己电脑的浏览器上访问,用户可以根据浏览器控制台的network工具查看接口请求的参数和返回值。
2. 在小程序或者APP中调用后台api接口,小程序和app是运行在用户的手机上,那么用户可以通过抓包、下载破解小程序或者app的源代码继而查看到你写的代码【代码里如果有写死用户名密码、Authorization之类的都将暴露】、甚至恶意用户可以通过网络请求抓包分析,拦截网络请求包继而查看到你调用接口时候传输的授权信息。
在上述场景中,因为不受信任和不确定性,**不允许使用上面的 Basic Authentication 方式调用后台api接口**,正确的使用方法为:
1. 提供一个登陆界面,让使用者输入用户名 + 密码进行登录,登录成功后,登录接口会返回用于调用后台的 X-TOKEN
2. 使用 X-TOKEN 调用后台的api接口
这种场景下,使用登陆后获取的 x-token 调用后台api接口是安全的,因为如果是恶意用户,把没有正确的后台登录用户名密码,继而无法获得 x-token。如果能获得 x-token,说明他本身就是具备合法的用户名和密码可以正常登录后台的受信任用户。
登陆接口可以在接口文档中,找到任意一个你方便的接口进行登陆:

# 四、在非信任场景下使用,又不想调用登陆接口
在实际应用中,可能会存在这样的情况,使用场景是在非信任设备,但是基于用户体验的考虑,又不想让授权用户去登陆,那么应该怎么做呢?
下面介绍一种可以授权给普通某个用户拥有管理员身份的方法,使其可以免登即可调用后台api接口的方法:

## 绑定普通用户和管理员的对应关系
假如现在要授权用户编号为 100004371 的这个用户,可以调用后台的api接口,首先,需要将这个用户和后台的某个管理员做绑定,绑定后,这个用户将被授权对应绑定的这个管理员的后台操作权限。

这样绑定以后,这个管理员和上面的普通用户就建立了一个关系,也就是完成了授权。
## 通过普通用户的登陆token,来换取 x-token
普通用户的token,即为你现有业务中用户的登陆接口返回的token,比如用户的很多操作api接口都是需要通过这个token调用的,比如:查看购物车、查看自己的订单、资金情况、资金流水等等
接口地址
https://user.api.it120.cc/login/token
POST 方式调用,请求方式使用 application/x-www-form-urlencoded
参数:token ,传入普通用户的登陆token
如果提供的当前用户的token正确,接口会返回用户调用后台api接口的 x-token,然后你就可以通过该 x-token 来调用后台的api接口了。
那么,万一这个普通用户,被绑定在了多个管理员账号下,应该怎么办呢?
这个情况是存在的,比如后台创建了多个身份角色的管理员,比如财务身份、客服身份....
那么这种情况下,如果存在多个绑定的管理员,系统就不知道应该返回哪个管理员的 x-token 给你使用,这个时候,上面的接口就会返回一个管理员的列表,每个管理员会有一个 id
你可以将这个管理员列表显示给用户看,让用户自行选择需要登录哪个管理员继而获取对应管理员的x-token,用户选择后,您还是调用上面的这个接口来获取对应管理员的 x-token,唯一不同的是,这个时候,你要多传一个参数: id ,传入用户选择要登录的这个管理员账号的 id
至此,您将可以很愉快的调用后台的api接口了,如在使用上有什么问题,可以向我们客服咨询并寻求帮助。