Passport and Auth :: logout()产生意外错误

问题描述 投票:1回答:2

我正在使用Laravel 6.7 with Passport使用我自己的API。当我尝试使用Auth::logout()注销用户时,出现以下错误:

Illuminate \ Auth \ RequestGuard :: logout不存在。

我不明白为什么会出现这种行为。我没有使用过任何海关守卫。根据Passport设置,我的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.']);
    }

有什么方法可以解决这个问题?任何见解将不胜感激。预先感谢。

laravel-passport laravel-6.2
2个回答
2
投票

[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'
    ]);
}

0
投票

尝试一下

public function logout(Request $request)
{
    $request->user()->token()->revoke();
    return response()->json([
        'message' => 'Successfully logged out'
    ]);
}
© www.soinside.com 2019 - 2024. All rights reserved.