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
| 归档时间: |
|
| 查看次数: |
9452 次 |
| 最近记录: |