我尝试在默认/手动moodle auth插件中实现短期密码功能。
因此,我有一个表格,其中包含user_id
,password
哈希hash_internal_user_password
和valid_from
以及valid_to
时间戳。
在auth插件的user_login($username, $password)
方法中,我添加了以下块
// Test for short-term-passwords
$stps = $DB->get_records('local_stp', ['user_id' => $user->id]);
foreach ($stps as $stp ) {
$now = time();
$validFrom = (int) $stp->valid_from;
$validTo = (int) $stp->valid_to;
if ($now < $validFrom || $now > $validTo) {
continue;
}
if (password_verify($password, $stp->password)) {
return true;
}
}
这就像魅力一样。但每次我使用其中一个临时密码登录时,默认用户密码的哈希值都会更改,我无法使用常规密码登录。
为什么会这样?
答案 0 :(得分:0)
问题位于update_internal_user_password
中定义的lib/moodlelib.php
函数中。每当moodle访问明文密码时,它都会更新相关的数据库记录。这种行为无法阻止。