Laravel - Попытка получить свойство 'token' необъекта ", исключение:" ErrorException " - PullRequest
0 голосов
/ 20 сентября 2019

Я использую Angular-7 в качестве внешнего интерфейса и Laravel-5.8 в качестве бэкэнда для веб-приложения.

ApiController.php

 public function login(Request $request)
 {
   $request->validate([
    'email' => 'required|string|email',
    'password' => 'required|string',
    'remember_me' => 'boolean'
    ]);
    $credentials = request(['email', 'password']);
    $credentials['active'] = 1;
    $credentials['deleted_at'] = null;
    if(!Auth::attempt($credentials))
    return response()->json([
      'message' => 'Unauthorized'
    ], 401);

    $user = $request->user();
    $res = User::with('roles')->find($user->id);
    $tokenResult = $user->createToken('MyApp')->accessToken;
    $token = $tokenResult->token;
    if ($request->remember_me)
    $token->expires_at = Carbon::now()->addWeeks(13);
    $token->save();
    return response()->json([
      'access_token' => $tokenResult->accessToken,
      'token_type' => 'Bearer',
      'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString(),
            'user' => response()->json($res)->original
        ]);
    }

Из внешнего интерфейса Angular, когда я нажимаю на submitна странице входа, он предполагает перенаправить на домашнюю страницу.Но я получил эту ошибку:

{сообщение: «Попытка получить свойство« токен »не-объекта», исключение: «ErrorException», файл: «C: \ xampp \ htdocs \ clientportal-».app \ backend \ app \ Http \ Controllers \ ApiController.php ", строка: 212, trace: Array (35)}

Когда я проверил строку 212 из Laravel ApiController из приведенного выше кода, эточто у меня есть:

$ token = $ tokenResult-> token;

Как мне разрешить это?

1 Ответ

0 голосов
/ 20 сентября 2019

Laravel Passport требует следующей настройки.Модель пользователя должна использовать черту HasApiTokens.

class User extends Authenticatable
{
    use Notifiable, HasApiTokens;
}

Маршруты паспортов необходимо добавить к методу boot() AuthServiceProvider

public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
    }

И, наконец, изменить драйвер APIдля паспорта в auth файле конфигурации.

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

Вам необходимо перенести таблицы паспорта

php artisan migrate

и сгенерировать ключи шифрования

php artisan passport:install

Очистить кеш с помощью

php artisan config:cache

и обслуживать ваше приложение

php artisan serve
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...