为了账号安全,请及时绑定邮箱和手机立即绑定

JWT 无法仅在实时站点上从请求中解析令牌

JWT 无法仅在实时站点上从请求中解析令牌

PHP
慕村225694 2021-06-16 13:15:08
我已经使用 PHP(7.0 版)构建了一个自定义 API,特别是使用 tymon/jwt-auth(1.0.0-rc.2 版)包进行用户授权的 Laravel 框架(5.5.40 版)。我的许多控制器功能使用这一行来获取当前用户的凭据:$user = JWTAuth::parseToken()->authenticate();我使用 Postman 来测试我的 api。当我在本地环境中进行 api 调用时,授权正常通过并返回预期数据。当我对我的实时站点 API(托管在我的 apache 服务器中)进行 api 调用时,我收到此错误:无法从请求中解析令牌由于这个错误只发生在我的实时 API 上,我推测我的 API 的 .htaccess 文件有问题(顺便说一下,应用程序可以正常识别,我做了一些调试并检查了我的 apache error_log 以确保对我的API 的 .htaccess 被识别)。我尝试添加这些行(以及这些行的不同变体,因为我在研究时遇到了多个建议):RewriteEngine OnRewriteCond %{HTTP:Authorization} .+RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]但错误仍然存在。我尝试添加此代码:var_dump($_SERVER);在...之前:$user = JWTAuth::parseToken()->authenticate();我注意到在我的实时 API 中,$_SERVER 数组中缺少这些元素: REDIRECT_HTTP_AUTHORIZATION、HTTP_AUTHORIZATION上面的 .htaccess 代码不是要手动添加这些吗?这些是我在 Chrome DevTools 中看到的响应头:访问控制允许来源: http:/example.gr缓存控制:无缓存,私有连接:关闭内容编码: gzip内容类型:应用程序/json日期: 2019 年 5 月 14 日,星期二 11:33:10 GMT服务器:阿帕奇传输编码:分块变化:起源,接受编码X-RateLimit-Limit: 60X-RateLimit-Remaining: 59这些是我的请求标头(显示临时标头):接受:应用程序/json,文本/纯文本,/授权:承载eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkudjIucmVzY2FwZXIuaG9uZXN0cGFydG5lcnMuZ3JcL2FwaVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1NTc4MzM1ODksImV4cCI6MTY0NDIzMzU4OSwibmJmIjoxNTU3ODMzNTg5LCJqdGkiOiJweDRjNDlOckFQbGMyM21OIiwic3ViIjo1LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.YWPhPDeNrB4TI1gdhBYylrmIAs1-R1-K2M2eKyO89KY来源: http : //example.gr参考: http://example/summary用户代理: Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/74.0.3729.131 Safari/537.36
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

似乎 apache 正在删除授权标头。所以试试这个



RewriteCond %{HTTP:Authorization} .+

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


RewriteCond %{HTTP:Authorization} .

RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

正则表达式有点不同。此配置是从 symfony/apache-pack 的默认 .htaccess 直接复制/粘贴的,您可以在此处找到 symfony/apache-pack


查看完整回答
反对 回复 2021-06-19
?
慕容708150

TA贡献1831条经验 获得超4个赞

问题终于解决了!这是一个权限问题。我将文件夹的所有内容都默认为 755,文件的所有内容都默认为 644,并且出现了 HTTP_AUTHORIZATION 标头。


查看完整回答
反对 回复 2021-06-19
  • 2 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信