代码之家  ›  专栏  ›  技术社区  ›  Vahid Najafi

Laravel护照创建没有用户模型的令牌

  •  0
  • Vahid Najafi  · 技术社区  · 4 年前

    通常,我可以按如下方式创建令牌:

    $user = User::find( $tokenData['user_id'] );
    return $user->createToken($tokenData['name'])->accessToken;
    

    因为我可以访问 user_id ,是否可以在不创建另一个查询的情况下创建令牌( User::find )?

    因为理论上令牌本身与user对象无关,而是user_id(我在tokenData数组中有它)。

    0 回复  |  直到 4 年前
        1
  •  3
  •   patricus    4 年前

    这就是 createToken 方法从 HasApiTokens 特质:

    public function createToken($name, array $scopes = [])
    {
        return Container::getInstance()->make(PersonalAccessTokenFactory::class)->make(
            $this->getKey(), $name, $scopes
        );
    }
    

    基于此,您似乎可以将代码更改为:

    return app(\Laravel\Passport\PersonalAccessTokenFactory::class)->make($tokenData['user_id'], $tokenData['name'])->accessToken;
    

    话虽如此,最好还是多问一个问题。为了节省1毫秒的时间,你会让你的代码更难阅读、理解和维护。这种权衡似乎不值得。