我正在尝试基于Laravel中的第三方api进行身份验证。不存储或使用本地数据库中的数据。在这里,我将api响应数据保留为仅用于可视化的数组。它显示错误传递给Illuminate \ Auth \ SessionGuard :: login()的参数1必须是Illuminate \ Contracts \ Auth \ Authenticatable的实例,已给出字符串,在vendor \ laravel \ framework \ src \ Illuminate \ Auth \中调用AuthManager.php 。我该如何解决。我也进行了研发。预先感谢
$user = [
'status' => '200',
'token' => 'aWsIpvOEZfv4sfSRUGS2dDeGw7',
'id' => '12454545412',
'user' => [
'name' => 'xyz',
'email' => 'xyz@gmail.com',
'phone' => '12344787',
],
];
$user = json_encode($user);
Auth::login($user);
return redirect( '/home' );
答案 0 :(得分:0)
如果愿意,应将User类创建为虚拟模型。
namespace App\Helpers; // depends on you
use Illuminate\Foundation\Auth\User as Authenticatable;
class AuthUser extends Authenticatable
{
protected $guarded = [];
}
您可以这样使用:
$user = [
'id' => '12454545412',
'name' => 'xyz',
'email' => 'xyz@gmail.com',
'phone' => 1234564897,
'token' => 'aWsIpvOEZfv4sfSRUGS2dDeGw7' // if you need in your user Object
];
$user = new AuthUser($user);
Auth::login($user);
dd(auth()->user());