Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel中调用未定义的方法Illumb\Auth\TokenGuard::Test()_Php_Laravel - Fatal编程技术网

Php 在laravel中调用未定义的方法Illumb\Auth\TokenGuard::Test()

Php 在laravel中调用未定义的方法Illumb\Auth\TokenGuard::Test(),php,laravel,Php,Laravel,我使用的是Laravel6.x和passport软件包。 安装此软件包之前,我在App\User中使用了api\u令牌。 现在我想用passport包对用户进行身份验证,但我遇到了这个错误 调用未定义的方法illumb\Auth\TokenGuard::trunt() 这是我的高尔德: 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users',

我使用的是Laravel6.x和passport软件包。 安装此软件包之前,我在App\User中使用了api\u令牌。 现在我想用passport包对用户进行身份验证,但我遇到了这个错误

调用未定义的方法illumb\Auth\TokenGuard::trunt()

这是我的高尔德:

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

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],
这是我的authController:

<?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);
        }
    }

}

您可能有以下配置:

更改您的
auth.php

护照
代币

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

    'api' => [
        'driver' => 'token',
        '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
{
    public function login(Request $request){



        $user = User::whereEmail($request->email)->first();

        if($user && Hash::check($request->password, $user->password)){
            $success['token'] =  $user->createToken('tp_@1')-> accessToken;
            return response()->json(['success' => $success],200);
        }
        else{
            return response()->json(['status'=>'invalid username or pass !'], 401);
        }
    }

}

好的,谢谢,但是你确定吗?我想用护照包!使用
会话
驱动程序<代码>尝试
方法来自SessionGuard@TsaiKoga请查看此url。但是,passport的guard没有
尝试
方法,您可以这样尝试:
Auth::guard('api')->尝试(['…');Auth::guard('web')->尝试(['…')。这是。我认为u提供的链接使用的是
'defaults'=>['guard'=>'web'…]