Moodle自己更改密码哈希

时间:2018-04-09 14:13:21

标签: php authentication moodle

我尝试在默认/手动moodle auth插件中实现短期密码功能。

因此,我有一个表格,其中包含user_idpassword哈希hash_internal_user_passwordvalid_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;
        }
    }

这就像魅力一样。但每次我使用其中一个临时密码登录时,默认用户密码的哈希值都会更改,我无法使用常规密码登录。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

问题位于update_internal_user_password中定义的lib/moodlelib.php函数中。每当moodle访问明文密码时,它都会更新相关的数据库记录。这种行为无法阻止。