Аутентификация пользователя провайдера [паспорт] не определена с паспортом laravel - PullRequest
0 голосов
/ 23 октября 2018

У меня есть API в Laravel, и я использую паспорт для аутентификации.

В моем файле config / auth.php я изменил это, так что API Api Guard использует паспорт и обращается к моему провайдеру пользователя

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

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

'providers' => [
   'users' => [
       'driver' => 'passport',
       'model' => App\Users::class,
   ],

Вот мое приложение / user.php

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens;
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    public static function lookup($login)
    {
        return Self::where('email', $login)->first();
    }
}

Теперь, когда я хочу войти в систему, я запускаю этот код:

$newUser = new User([
           'name' => $login,
           'email' => $login,
           'password' => $password
       ]);

       $authUser = User::lookup($login);

       $tokenResult = $authUser->createToken('Personal Access Token');
       $token = $tokenResult->token;

       if ($remember)
       {
          $token->expires_at = Carbon::now()->addWeeks(1);
          $token->save();
       }

       return response()->json([
          'access_token' => $tokenResult->accessToken,
          'token_type' => 'Bearer',
          'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString()
        ]);

Это возвращает мне токен доступа очень хорошо.Что я пытаюсь сделать, это проверить, если пользователь вошел в систему при выполнении других функций на сайте.Я делаю это, как показано ниже в файле маршрутов:

Route::get('me', 'Account@me')->middleware('auth:api');

Поэтому я хочу получить информацию о том, кто вошел в систему, но он падает на промежуточном программном обеспечении, сообщая мне об ошибке «Аутентификация провайдера пользователя [passport] не определено '

Любая помощь оценена

1 Ответ

0 голосов
/ 04 декабря 2018

Вы использовали неправильный драйвер провайдера пользователя passport, вместо этого используйте eloquent как это:

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

Также у вас есть дополнительный s в названии модели.

...