使用多个表在 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 的用户可以正常登录
我有 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 的用户可以正常登录