Laravel Passport createToken 错误

Ped*_*dro 5 laravel laravel-passport

您好,我正在尝试从用户对象生成令牌,如下所示:

<?php
namespace App\Http\Controllers\API\Auth;

use App\Models\User;
use App\Http\Controllers\Controller;
use Auth;
use Response;

class LoginController extends Controller
{
    public function login() { 
        $content = [];
        if(Auth::attempt(['email' => request('username'), 'password' => request('password')])){
            $user = Auth::user();
            $role = $user->roles()->first()->name;
            $content['access_token'] = $user->createToken('Token Name')->accessToken;
            $status = 200;
        }
        else{
            $content['error'] = "Unauthorised";
            $content['message'] = "Your email or password are incorrect";
            $status = 401;
        }
        return response()->json($content, $status); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到 500 服务器错误:

Trying to get property of non-object
Run Code Online (Sandbox Code Playgroud)

我在用户模型上有 HasApiTokens,并且使用内置 Passport 路由生成令牌没有问题。

这是堆栈跟踪的第一部分:

    [2018-06-12 18:20:59] local.ERROR: Trying to get property of non-object {"userId":1,"email":"***","exception":"[object] (ErrorException(code: 0): Trying to get property of non-object at ...vendor/laravel/passport/src/ClientRepository.php:81)
[stacktrace]
#0 ...vendor/laravel/passport/src/ClientRepository.php(81): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'Trying to get p...', '/Users/peterste...', 81, Array)
#1 ...vendor/laravel/passport/src/PersonalAccessTokenFactory.php(71): Laravel\\Passport\\ClientRepository->personalAccessClient()
#2 ...vendor/laravel/passport/src/HasApiTokens.php(67): Laravel\\Passport\\PersonalAccessTokenFactory->make(1, 'Token Name', Array)
#3 ...app/Http/Controllers/API/Auth/LoginController.php(16): App\\Models\\User->createToken('Token Name')
#4 [internal function]: App\\Http\\Controllers\\API\\Auth\\LoginController->login()
#5 ...vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
#6 ...vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('login', Array)
#7 ...vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\API\\Auth\\LoginController), 'login')
#8 ...vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\\Routing\\Route->runController()
#9 ...vendor/laravel/framework/src/Illuminate/Routing/Router.php(659): Illuminate\\Routing\\Route->run()
Run Code Online (Sandbox Code Playgroud)

小智 0

尝试使用以下命令创建客户端 ID 和密钥: php artisan Passport:client

有关更多详细信息: https://laravel.com/docs/5.6/passport#client-credentials-grant-tokens