首页 > 解决方案 > 在 laravel 中调用未定义的方法 Illuminate\Auth\TokenGuard::attempt()

问题描述

我正在使用 Laravel 6.x 和护照包。在安装此软件包之前,我在 App\User 中使用了 api_token。现在我想用护照包对用户进行身份验证,但我遇到了这个错误,

调用未定义的方法 Illuminate\Auth\TokenGuard::attempt()

这是我的守卫:

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

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

这是我的身份验证控制器:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class AuthController extends Controller
{
    private $successStatus=200;
    public function login(){
        if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
            $user = Auth::user();
            $success['token'] =  $user->createToken('MyApp')-> accessToken;
            return response()->json(['success' => $success], $this-> successStatus);
        }
        else{
            return response()->json(['error'=>'Unauthorised'], 401);
        }
    }

}

标签: phplaravel

解决方案


您可能具有以下配置:

改变你的auth.php

passporttoken

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

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

推荐阅读