簡體   English   中英

當用戶在Drupal中更改密碼時,以明文形式獲取新密碼?

[英]Get new password in cleartext when a user changes it in Drupal?

在我的Drupal模塊中,我試圖鈎住用戶更改密碼的位置。 我還需要其他明文形式的內容。

所以我做了基本的事情,並使用了tcauth_user_presave() 然后,我更改了密碼,這觸發了日志記錄功能。 但是,當我查看日志時,提供的&$edit$account$category變量不包含明文形式的新密碼。 唯一可用的是舊密碼(以明文形式)和新密碼被散列。

無論如何,當有人更改明文密碼時,是否可以獲得它? 如果重要的話,這就是Drupal 7。

調用 presave掛鈎之前,密碼會在user_save()中進行哈希處理

看起來,除了改變表格之外,還有其他選擇。 user_profile_form_submit( 中調用user_save()之前,將通過entity_form_submit_build_entity()幫助器函數調用hook_field_attach_submit()。 盡管它是一個字段掛鈎,但它確實將完整的用戶對象接收為$ entity。

不知道這是否真的比更改表單更好,因為鈎子是為所有實體更改而不僅僅是用戶更改而調用的。

我不確定這是否是捕獲它的最佳位置,但是在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對其進行編碼。 如果您需要更多詳細信息,請發表評論。

這是我的例子。 對於我來說,閱讀新密碼很有幫助。

/**
 * 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;
  }
}

hook_user_update()上嘗試一下

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM