Laravel-试图获取非对象的属性“令牌”,例外:“ ErrorException”

时间:2019-09-20 06:31:21

标签: php angular laravel

我将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行,跟踪:Array(35)}

当我从上面的代码检查Laravel ApiController的212行时,这就是我所拥有的:

  

$ token = $ tokenResult->令牌;

我该如何解决?

1 个答案:

答案 0 :(得分:0)

Laravel Passport需要以下配置。 用户模型需要使用HasApiTokens特征。

class User extends Authenticatable
{
    use Notifiable, HasApiTokens;
}

需要将护照路线添加到boot()的{​​{1}}方法中

AuthServiceProvider

最后在public function boot() { $this->registerPolicies(); Passport::routes(); } 配置文件中将api驱动程序更改为通行证。

auth

您需要迁移Passport表

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

并生成加密密钥

php artisan migrate

清除缓存

php artisan passport:install

并提供您的应用

php artisan config:cache