如何在 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,其中包含此代码,包括帮助类。
由于这是一个示例代码,我不希望有任何 username
或 password
。
获取身份验证令牌
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 表单验证启用查询生成器?