[英]Laravel - Trying to get property 'token' of non-object“, exception: ”ErrorException"
我使用 Angular-7 作為前端,Laravel-5.8 作為 web 應用程序的后端。
ApiController.php
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
$credentials['active'] = 1;
$credentials['deleted_at'] = null;
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$res = User::with('roles')->find($user->id);
$tokenResult = $user->createToken('MyApp')->accessToken;
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(13);
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString(),
'user' => response()->json($res)->original
]);
}
從 Angular 前端,當我點擊登錄頁面上的提交時,它假設重定向到主頁。 但我得到了這個錯誤:
{消息:“嘗試獲取非對象的屬性'token'”,異常:“ErrorException”,文件:“C:\xampp\htdocs\clientportal-app\backend\app\Http\Controllers\ApiController.php”,行:212,跟蹤:數組(35)}
當我從上面的代碼中檢查 Laravel ApiController 的第 212 行時,這就是我所擁有的:
$token = $tokenResult->token;
我該如何解決?
Laravel Passport 需要以下配置。 用戶 model 需要使用HasApiTokens
特征。
class User extends Authenticatable
{
use Notifiable, HasApiTokens;
}
Passport 路由需要添加到AuthServiceProvider
的boot()
方法中
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
最后將 api 驅動程序更改為auth
配置文件中的護照。
'api' => [
'driver' => 'passport',
'provider' => 'users',
]
您需要遷移 Passport 表
php artisan migrate
並生成加密密鑰
php artisan passport:install
清除緩存
php artisan config:cache
並為您的應用提供服務
php artisan serve
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.