调用 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  ·  5年前

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1
liyu001989

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

5年前 评论
liyu001989

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

5年前 评论

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