JWT Authentication for WP REST API 授权验证问题
网站安装了 JWT Authentication for WP REST API 插件,针对授权采用 token 验证而不是传统的 Cookie 验证,其中就发现了一个问题,将已取得的授权 token 发送到接口上进行验证,总是提示获取不到授权信息,在 WrodPress 插件论坛里面找到了解决方法。
使用这个插件几乎都会遇到这样的问题,在检查 jwt-authentication-for-wp-rest-api/public/class-jwt-auth-public.php 的validate_token 方法时,注意到该函数只检查全局变量,它似乎没有从请求中获取所有信息,所以我们必须要修改下这里的获取方法:
在文件的第 237 行添加下面的代码:
if(!$auth) { $auth = isset(getallheaders()['Authorization']) ? getallheaders()['Authorization'] : false; }
插件的作者应该是没有主题到这个问题,所以你修改了插件的文件,注意下次更新的时候看看这个地方是否被覆盖了。
注意:我在添加上面代码的时候直接报语法错误错了,因为我使用的是 PHP 5.3 并不支持在函数返回值后面直接去数组值,换到 PHP 5.4 就好了。
还有我感觉获取授权的时候应该把用户的 ID 返回来,这样好标识和储存用户信息,同样你也可以修改这个文件实现。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论