laravel - 基于 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' );
解决方案
如果您愿意,您应该将 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());
推荐阅读
- openstreetmap - 查找 WKT 在澳大利亚的城市
- python - Matplotlib - 如何在给定散点图的真实值和预测值之间绘制垂直线?
- fastify - 使用 OpenAPI 3.0.0 配置 Fastify
- r - 如何解释 which() 输出中的数组索引?
- git - 在 PhpStorm 分支名称前面有一个加号“+”
- angular - Angular:如何在 Angular 中重现黑屏/白屏问题?
- c++ - 在 Visual Studio C++ 上执行时编译错误
- .net - 如何在 AWS Lambda 上加载 .so(共享文件)文件,
- mysql - 每月一次将 Mysql RDS dstabase 复制到另一个 RDS 数据库
- android - 按钮对齐左开始和右结束android kotlin