【问题标题】:Get new password in cleartext when a user changes it in Drupal?当用户在 Drupal 中更改密码时,以明文形式获取新密码?
【发布时间】:2011-01-21 05:37:23
【问题描述】:

在我的 Drupal 模块中,我试图挂钩用户更改密码的位置。我需要这个明文来做别的事情。

所以我做了基本的事情并使用了tcauth_user_presave()。然后我更改了触发日志记录功能的密码。但是,当我查看日志时,提供的 &$edit$account$category 变量不包含明文形式的新密码。唯一可用的是旧密码(明文)和散列的新密码。

当有人更改明文密码时,是否有办法获取明文密码?如果重要的话,这就是 Drupal 7。

【问题讨论】:

    标签: php drupal drupal-modules drupal-7


    【解决方案1】:

    在调用 presave 钩子之前,密码在 user_save() 中进行哈希处理。

    不过,除了更改表单之外,似乎还有其他选择。在user_profile_form_submit() 中调用 user_save() 之前,通过 entity_form_submit_build_entity() 辅助函数调用hook_field_attach_submit()。虽然它是一个字段挂钩,但它确实将完整的用户对象作为 $entity 接收。

    不确定这是否真的比更改表单更好,因为所有实体更改都会调用挂钩,而不仅仅是用户。

    【讨论】:

    • hook_field_attach_submit() 工作。当前通行证位于$entity["current_pass"],新通行证位于$form["#user"]["pass"];。谢谢!
    • 我注意到了:hook_field_attach_submit() 是一个非常通用的名称。你知道它是否会被要求做其他事情吗?
    • 是的,每个实体都会调用它,因此您需要确保只对 $entity_type 用户执行操作。
    【解决方案2】:

    我不确定这是否是捕捉它的最佳位置,但纯文本输入在 hook_form_alter 中可用:

    function testing_form_alter(&$form, &$form_state, $form_id) {
      if ($form_id = 'user_profile_form') {
        dpm($form_state['input']['pass']['pass1']);
      }
    }
    

    更新:我做了更多的挖掘工作。我认为我解决它的方法是向 user_profile_form 添加另一个提交处理程序,确保在 user_profile_form_submit 之前将其添加到数组中。然后,在 user_profile_form_submit 对其进行编码之前,您将拥有对密码的完全访问权限。如果您需要更多详细信息,请发表评论。

    【讨论】:

      【解决方案3】:

      这是我的例子。阅读新密码对我来说很有帮助。

      /**
       * Implement hook_field_attach_submit().
       */
      function yourmodulename_field_attach_submit($entity_type, $entity, $form, &$form_state) {
        if ($entity_type == 'user') {
          // deal with $form["#user"]->pass;
        }
      }
      

      【讨论】:

        【解决方案4】:

        hook_user_update()上试试这个

        $_POST['pass']['pass2']
        

        【讨论】:

        • 自从我发布这个问题以来已经很久了,我需要这个的项目已经死了。谢谢你的回答
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-15
        • 2023-03-31
        • 2020-07-02
        • 2017-10-05
        • 2021-04-01
        • 1970-01-01
        相关资源
        最近更新 更多