如何在 CodeIgniter 3.x 中为来自客户端的每个请求验证 JWT 令牌

Posted

技术标签:

【中文标题】如何在 CodeIgniter 3.x 中为来自客户端的每个请求验证 JWT 令牌【英文标题】:How to verify JWT Token in CodeIgniter 3.x for every request from Client 【发布时间】:2017-04-15 15:51:58 【问题描述】:

很长一段时间后,我又来这里解决我的问题。我对 Codeigniter 框架很陌生。我刚开始在 CodeIgiter 中学习 RESTful api。然后我知道我们可以使用 JWT 代替 Sessions。我能够使用 JWT 并成功生成令牌。现在这里的问题是,我想为来自客户端的每个请求验证生成的令牌。 例如, 这是基本的 url 或 api, http://localhost/codeigniter/api/

现在我想验证这样的事情:

http://localhost/codeigniter/api?token="here the generated token will come"

如何使用 Codeigniter 3.x 实现它

我使用 codeigniter-rest 服务器进行 API 调用,使用 php-jwt 生成令牌。

【问题讨论】:

【参考方案1】:

首先从代码https://github.com/rmcdaniel/angular-codeigniter-seed/blob/master/api/application/helpers/jwt_helper.php创建一个助手

然后加载或自动加载此帮助程序。

这会给你令牌

helper_name::encode(data, secure_key) 

要验证你需要使用

helper_name::decode(token,secure_key,true) 

它会给你编码的数据,或者如果令牌无效,它会给你 false。

【讨论】:

【参考方案2】:

重要更新:

我将repository 更新为CodeIgniter 4。想要使用 CodeIgniter 3 的开发者,请使用以下命令:

git checkout CI3

原答案:

我创建了一个repository,其中包含此代码,包括帮助类。

由于这是一个示例代码,我不希望有任何 usernamepassword

获取身份验证令牌

URL: http://host/CodeIgniter-JWT-Sample/auth/token
Method: GET

检查解码的令牌

URL: http://host/CodeIgniter-JWT-Sample/auth/token
Method: POST
Header Key: Authorization
Value: Auth token generated in GET call

【讨论】:

以上是关于如何在 CodeIgniter 3.x 中为来自客户端的每个请求验证 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CodeIgniter 中为 Laravel 中的第一个项目定义子域路由?

如何在 CodeIgniter 中为 is_unique 表单验证启用查询生成器?

在 Codeigniter 中为卖家创建和添加自定义组

在codeigniter中为会话闪存数据提供css

如何在 PHP codeigniter 中显示来自 FTP 服务器的图像? [复制]

一个基于codeigniter的淘宝客程序源码,适合学习参考,京东拼多多淘宝联盟api