Laravel API返回不同的模型用户

时间:2017-07-04 10:21:15

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

我有2个模型AdminUser我可以通过引用{{3}修改access_tokenUserRepository来为这两个模型授予PasswordGrant }

在授予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(); 
});

期待急需的帮助

谢谢

1 个答案:

答案 0 :(得分:1)

默认情况下,laravel使用网络防护。您可以像

一样使用api guard
\Auth::guard('api')->user()

访问用户