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

Vla*_*har 6 php database laravel xenforo laravel-5.8

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

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

有必要通过这两个表进行身份验证。用户正确输入了用户名/密码-登录Laravel CMS。

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

protected $ connection = 'forum';
protected $ table = 'xf_users';
public $ timestamps = false;
Run Code Online (Sandbox Code Playgroud)

我还创建了用于从xf_user_authenticate表获取密码的密码模型

class Password extends Model
{
     protected $ fillable = ['data'];
     protected $ connection = 'forum';
     protected $ table = 'xf_user_authenticate';
     public $ timestamps = false;
}
Run Code Online (Sandbox Code Playgroud)

此外,据我了解,我需要创建一个自定义守护程序和提供程序,在这里我再也无法理解下一步该怎么做...

如何在Laravel引擎中使用这两个表进行身份验证?

Vla*_*har 7

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

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'];
    }
}
Run Code Online (Sandbox Code Playgroud)

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