【问题标题】:Laravel API returning different model userLaravel API 返回不同的模型用户
【发布时间】:2017-12-07 18:29:15
【问题描述】:

我有 2 个模型 AdminUser 我可以通过引用 https://github.com/laravel/passport/issues/161 修改 UserRepositoryPasswordGrant 来为这两个模型授予 access_token

在授予access_token 时一切都很好,但是当请求用户详细信息时 http://localhost:8000/api/user 我正在获取 User 模型的用户详细信息。

{
    "id": 2,
    "name": "App User",
    "email": "appuser@gmail.com",
    "created_at": "2017-07-04 10:01:52",
    "updated_at": "2017-07-04 10:01:52"
}

//but i should be getting the user details of `admin` model
{
    "id": 1,
    "name": "Admin",
    "email": "admin@gmail.com",
    "created_at": "2017-07-04 10:01:52",
    "updated_at": "2017-07-04 10:01:52"
}

我猜在请求user 时指的是User 模型而不是Admin 模型

我的auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'passport',
        'provider' => 'admins',
    ],
],


'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
],

我只是在我的routes/api.php 路线中返回用户

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user(); 
});

期待获得急需的帮助

谢谢

【问题讨论】:

  • 如何从请求中访问用户数据?您是否认为您在用户会话仍然有效的 Web 中间件上下文中执行请求?
  • @Frank Provost 感谢您抽出宝贵的时间,非常感谢,我正在开发api,它不仅仅是一个用于前端应用程序的api 网站
  • 那么您能否提供代码示例,说明您访问相关用户的位置以及返回错误用户的位置?
  • @Frank Provost,我更新了我的帖子
  • 而不是将 use Auth 放在开头,您可以直接使用它与 \Auth::guard('api')->user()

标签: php laravel api laravel-5.4 laravel-passport


【解决方案1】:

默认情况下,laravel 使用 web 防护。你可以像使用 api 守卫一样

\Auth::guard('api')->user()

访问用户

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多