Passport и Auth :: logout () выдают неожиданную ошибку - PullRequest
1 голос
/ 04 февраля 2020

Я использую Laravel 6.7 с паспортом , чтобы использовать мой собственный API. Когда я пытаюсь выйти из системы с помощью Auth::logout(), я получаю следующую ошибку:

Подсветка \ Auth \ RequestGuard :: logout не существует.

Дон не понимаю, почему у меня такое поведение. Я не использовал никаких пользовательских охранников. Мой Auth. php в соответствии с настройкой паспорта выглядит следующим образом:

<?php

return [
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

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

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

Это мой AuthenticationController. php, где находится код выхода из системы:

/**
     * --------------------------------------------------
     * Removes the identity of a users login session.
     * --------------------------------------------------
     * @param Request $request
     * @return MessageResource
     * --------------------------------------------------
     */
    public function logout(Request $request): MessageResource
    {
        if (Auth::check()) {
            Auth::user()->token()->revoke();
        }
        return new MessageResource(['message' => 'Logout request is successful.']);
    }

Есть ли способ решить эту проблему? Любая идея будет принята с благодарностью. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Auth::logout() для web guard. Здесь вы используете API-защиту, поэтому удалите токен авторизации, он автоматически выйдет из вашего приложения.

public function logout(Request $request)
{
    $request->user()->token()->revoke();
    //$request->user()->token()->delete(); for delete.
    //Auth::user()->token()->revoke(); same way as revoke user token
    return response()->json([
        'message' => 'Successfully logged out'
    ]);
}
1 голос
/ 04 февраля 2020

Попробуйте это

public function logout(Request $request)
{
    $request->user()->token()->revoke();
    return response()->json([
        'message' => 'Successfully logged out'
    ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...