Laravel基于JSON数据的自定义身份验证

时间:2020-05-28 10:04:16

标签: laravel laravel-5

我正在尝试基于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' );

1 个答案:

答案 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());