Php Laravel-试图获得财产';代币';“非对象”的定义;,例外情况:;ErrorException“;
我使用Angular-7作为前端,Laravel-5.8作为web应用程序的后端 ApiController.phpPhp Laravel-试图获得财产';代币';“非对象”的定义;,例外情况:;ErrorException“;,php,angular,laravel,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'
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
]);
}
从角度来看,当我在登录页面上单击submit时,它会重定向到主页。但我有一个错误:
{消息:“试图获取非对象的属性‘token’”,异常:“ErrorException”,文件:“C:\xampp\htdocs\clientportal app\backend\app\Http\Controllers\ApiController.php”,行:212,跟踪:Array(35)}
当我从上面的代码中检查Laravel ApicController的第212行时,我得到的是:
$token=$tokenResult->token
如何解决此问题?Laravel Passport需要以下配置。 用户模型需要使用HasApiTokens特性
class User extends Authenticatable
{
use Notifiable, HasApiTokens;
}
Passport路由需要添加到AuthServiceProvider的boot()
方法中
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
最后在auth
config文件中将api驱动程序更改为passport
'api' => [
'driver' => 'passport',
'provider' => 'users',
]
您需要迁移Passport表
php artisan migrate
并生成加密密钥
php artisan passport:install
使用清除缓存
php artisan config:cache
并为您的应用程序提供服务
php artisan serve
这与角度无关。此错误在您的服务器端。我如何从服务器端解决此问题?请复制ApiController第212行上的代码,主要错误在于您访问令牌值的方式。您是否使用Laravel Passport?@Dino Numić-是