【问题标题】:Retrieving Authenticated User with relation data laravel 8使用关系数据 laravel 8 检索经过身份验证的用户
【发布时间】:2022-02-09 11:46:05
【问题描述】:

我目前正在研究 laravel 8 上的 JWT 身份验证。为了直接解释我试图做什么,我试图在成功通过身份验证后发送用户数据和关系数据。 请看下面我的代码

    //response login "success" with generate "Token"
    return response()->json([
        'success' => true,
        'user'    => auth()->guard('api')->user(),  
        'token'   => $token
    ], 200);enter code here

在这种情况下,api 返回带有用户数据和 jwt 令牌的身份验证条件。但 'user' => auth()->guard('api')->user() 不返回用户数据和关系数据。目前我的用户表与角色表有关系,所以我还想根据用户数据中的角色 ID 发送角色数据。类似于使用 with() 函数的急切加载。 如果您对此有任何线索或解决方案,请帮助我解决此问题。 谢谢你

【问题讨论】:

  • 顺便说一句,auth 确实为守卫使用了一个参数... auth('api') == auth()->guard('api')

标签: php laravel


【解决方案1】:

你可以利用 Laravel 模型的延迟加载方法

https://laravel.com/docs/8.x/eloquent-relationships#lazy-eager-loading

$user = auth()->guard('api')->user();

$user->load(['relation1', 'relation2']);

return response()->json([
        'success' => true,
        'user'    => $user,  
        'token'   => $token
    ], 200);

或者您可以通过将它们添加到模型中来潜在地始终加载用户模型的关系

https://laravel.com/docs/8.x/eloquent-relationships#eager-loading-by-default

class User extends ExtendedClasses
{
    /**
     * The relationships that should always be loaded.
     *
     * @var array
     */
    protected $with = ['relation1', 'relation2'];

【讨论】:

  • 非常感谢兄弟
猜你喜欢
  • 2023-03-31
  • 2018-01-27
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 2019-05-19
  • 2020-05-27
  • 1970-01-01
相关资源
最近更新 更多