php - 如何从 laradoo 包中的 res.users 模型对用户进行身份验证
问题描述
我已经在我的项目中安装了这个laradoo
包Laravel
,它将连接到 odoo DB。我已经连接到数据库,但现在我无法从res.users model
. 因为当我尝试使用以下代码获取用户信息时。
$odoo = new \Edujugon\Laradoo\Odoo();
$odoo = $odoo->connect();
$models = $odoo->where('login', 'test@test.com')->fields('name','login','password')->get('res.users');
echo "<pre>";
print_r($models);
它在未返回密码的情况下给出以下响应。
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => Array
(
[id] => 6
[name] => test
[login] => test@test.com
[password] =>
)
)
)
因此,我尝试了另一种方法,例如在 Laravel 上创建哈希并尝试像下面的代码一样进行身份验证
$odoo = new \Edujugon\Laradoo\Odoo();
$odoo = $odoo->connect();
$password = "12345";
$iterations = 1000;
// Generate a random IV using openssl_random_pseudo_bytes()
// random_bytes() or another suitable source of randomness
$salt = openssl_random_pseudo_bytes(16);
$hash = hash_pbkdf2("sha512", $password, $salt, $iterations, 20);
$models = $odoo->where('login', 'test@test.com')->where('password', $hash)->fields('name','login','password')->get('res.users');
echo "<pre>";
print_r($models);
但它不能正常工作。如果密码正确或错误,它将始终返回给用户。所以,如果你能帮助我从 odoo 获取密码或为 odoo 创建一个哈希值,res.users model
那就太好了。
解决方案
如果您需要覆盖 laravel 散列以接受来自 odoo DB 的密码。您需要根据需要在 EloquentUserProvider.php 中修改以下函数
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
$hash = hash('sha512',$plain);
if($hash == $user->getAuthPassword() ){
return true;
}else{
return false;
}
// return $this->hasher->check($plain, $user->getAuthPassword());
}
推荐阅读
- batch-file - 如何执行 .bat 以按时间顺序运行多个文件?
- javascript - 如何通过点击一个js按钮生成1到3之间的三个不同的随机数
- python - python3.7关于项目的AttributeError
- java - 读取 JSON - 改造 - Android Studio
- javascript - 智能排序(对可能包含或不包含数字的字符串进行排序)
- scala - 如何在将文件下沉到 playframework 中的目标之前检查文件大小?
- javascript - 在p5 js中沿运动方向旋转物体
- php - 如何在php中接收Soap响应
- reactjs - 如何检查从 ReactStrap 中选择了多选输入表单中的哪些选项
- algorithm - 长方体表面上两点之间的最短路径