调用 http://larabbs.test/API/user 接口时报 401 错误的"解决思路"

file

出现报错请求的时候我很慌... 懵逼了, 看了教程底下的好几个相关的问答都没解决问题...大半个小时候后终于解决了.

在这里分享一下解决的重要点:

  1. 通过 command 或 登陆接口 拿到 token
  2. 网上随便找个 base64 解码的, 查看其中的内容是否正常

我是在上面步骤2中发现其中数据有异常, 如下图
file

payload 中的 sub 值竟然是 null, 这么一看, 问题出现 token 的生成上的.
开始排查:

  1. Commands\GenerateToken.php
    public function handle()
    {
    ...
    $this->info(\Auth::guard('api')->setTTL($ttl)->fromUser($user));
    }

    从此处生成 token 开始跟进

  2. ...\vendor\tymon\jwt-auth\src\JWT.php
    public function makePayload(JWTSubject $subject)
    {
    \Log::info($this->getClaimsArray($subject));
    return $this->factory()->customClaims($this->getClaimsArray($subject))->make();
    }

    这时候开始打日志查看情况了...

    [2018-09-03 22:56:21] local.INFO: array (
    'sub' => NULL,
    'prv' => '23bd5c8949f600adb39e701c400872db7a5976f7',
    )  

    这时候突然想到, sub指的不就是用户识别号嘛...去 User model 一看, 果然是代码写错了

    public function getJWTIdentifier()
    {
    $this->getKey();
    }

    ↑ 次数没有加上 return...

崩溃..加上return后, 测试通过.

附言 1  ·  6年前

感觉还是要靠细心, 不然浪费的时间太没必要了.

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
liyu001989

报错了,看看源码,调试一下,不是更熟悉jwt了吗,比做完了一脸懵逼强多了

6年前 评论
liyu001989

报错了,看看源码,调试一下,不是更熟悉jwt了吗,比做完了一脸懵逼强多了

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!