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引擎中使用这两个表进行身份验证?
我通过更改用户模型解决了这个问题:
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的用户可以正常登录