使用多个表在 xenforo 数据库中 Laravel 中进行用户身份验证

User authentication in Laravel from xenforo database with using several tables

我有 2 个数据库:一个来自 Laravel,另一个来自 XenForo 2。在 Laravel 上,不应进行注册,而应仅在论坛上进行注册,以减少数据重复并消除如果由于某种原因发生不同步。

XF中有2个table:xf_users——存储用户基本信息,xf_user_authenticate - 存储带有密码哈希的序列化数组字符串。

需要通过这2个table进行认证。用户正确输入 username/password - 登录到 Laravel CMS。

连接第三方数据库很简单:在用户模型中手动注册连接如下:

protected $ connection = 'forum';
protected $ table = 'xf_users';
public $ timestamps = false;

我还创建了 密码模型 用于从 xf_user_authenticate table:

获取密码
class Password extends Model
{
     protected $ fillable = ['data'];
     protected $ connection = 'forum';
     protected $ table = 'xf_user_authenticate';
     public $ timestamps = false;
}

另外,据我了解,我需要做一个custom guard和provider,到这里我已经看不懂下一步要做什么了...

如何在 laravel 引擎中使用这 2 个 table 进行身份验证?

我通过更改用户模型解决了这个问题:

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = ['username', 'email', 'password', 'user_state'];
    protected $connection = 'forum';
    protected $table = 'xf_user';
    protected $primaryKey = 'user_id';
    public $timestamps = false;

    public function getAuthPassword(){
        $password = Password::where('user_id', '=', $this->user_id)->select('data')->first();
        return unserialize($password->data)['hash'];
    }
}

使用此模型,来自 XF 的用户可以正常登录