Codeigniter、Restful API 和如何使用密钥

Posted

技术标签:

【中文标题】Codeigniter、Restful API 和如何使用密钥【英文标题】:Codeigniter, Restful API & How to use Keys 【发布时间】:2017-03-26 09:21:52 【问题描述】:

我正在使用 Phil Sturgeon 和 Chris Kacerguis 的 Restful 服务器(请访问此处https://github.com/chriskacerguis/codeigniter-restserver)并且对 API KEYS 的使用有一个一般性的问题。我对 API 和概念非常陌生。

KEYS 是如何工作的?有一个名为 KEYS 的表定义如下:

| Default table schema:
|   CREATE TABLE `keys` (
|       `id` INT(11) NOT NULL AUTO_INCREMENT,
|       `user_id` INT(11) NOT NULL,
|       `key` VARCHAR(40) NOT NULL,
|       `level` INT(2) NOT NULL,
|       `ignore_limits` TINYINT(1) NOT NULL DEFAULT '0',
|       `is_private_key` TINYINT(1)  NOT NULL DEFAULT '0',
|       `ip_addresses` TEXT NULL DEFAULT NULL,
|       `date_created` INT(11) NOT NULL,
|       PRIMARY KEY (`id`)
|   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在一个叫KEYS的类中有如下方法:

index_put() // key created.  builds a new key.
index_delete() // Remove a key from the database to stop it working.
level_post() // Update Key. Change the level.
suspend_post() // Update Key.  Change the level.
regenerate_post() //   Regenerate key.  Remove a key from the database to stop it working.

由于这个包没有很好的文档记录,而且我是 API 新手,以上如何工作?例如,我是否生成 1 个密钥并将其永久插入数据库。为什么有删除方法?

根据我的阅读,听起来我为应用程序生成了一个初始 X-API-KEY,然后当客户端使用资源时,我会使用 KEYS 类将 X-API-KEY 交换为另一个密钥。我也会删除它,但是什么时候? ...还是我的理解都搞砸了?

【问题讨论】:

【参考方案1】:

这里有很多好问题。

“KEYS 是如何工作的?”

RESTful API 服务可以为多个不同的用户提供服务,因此 API 密钥是授予对 REST API 访问权限的单独密钥。这允许服务管理员授予或撤销对不同用户的访问权限或修改授予每个用户的权限。

“为什么会有删除方法?”

这是为了撤销对特定密钥的 API 访问权限。使用它的原因可能有很多。也许 API 用户违反了服务条款,或者如果这是一项付费服务​​,他们的订阅可能已经结束或被撤销。它允许管理员取消用户对 API 服务的访问。这也应该回答您“何时?”的问题

【讨论】:

以上是关于Codeigniter、Restful API 和如何使用密钥的主要内容,如果未能解决你的问题,请参考以下文章

[CI] 使用CodeIgniter框架搭建RESTful API服务

使用 RESTful 服务保护跨域的 API 调用

CodeIgniter RESTful,异步/后台进程

无法使用 Vue 和 Codeigniter 进行本地 Api 调用

Feign 接入第三方restful api 入门

Codeigniter 和 Mandrill api,无法发送电子邮件