首页 > 解决方案 > 基于 json 数据的 Laravel 自定义认证

问题描述

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

标签: laravellaravel-5

解决方案


如果您愿意,您应该将 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());

推荐阅读