2012-06-24 45 views
0

我正在将论坛系统(mybb)中的网站转换为drupal网站,显然密码方案完全不同。挂钩到drupal的密码机制

我正在计划导入所有用户的旧密码哈希,前缀为“mybb_”。

我想编写一个模块来检测前缀密码,如果用户使用旧机制登录认证,然后用drupal 7散列密码替换密码。

我对drupal的开发比较陌生,所以我不熟悉钩子等需要做到这一点。

任何指导意见将是巨大的:)

(此外如果有处理这方面比我提出了一个更好的办法,请随时插话)。

+0

Drupal 7的SHA有盐,哈希mybb有? –

+0

@AyeshK它使用以下方案: '$ user ['password'] = md5(md5($ user ['salt'])。md5($ input ['password']));' – 9point6

回答

1

的Drupal确实在很多类似的检查功能user_check_password()。它由验证函数user_login_authenticate_validate()调用,因此您可以使用hook_form_alter()覆盖此值,并指向包含mybb检查的user_check_password()自定义版本。

另一种方式,不是重写,而是在登录表单中添加一个验证处理程序,并在其中检测,验证和重新刷新密码。

+0

我已经找到一种重写的方式,你如何在普通的函数之前添加一个额外的函数? – 9point6

+1

在表单user_login()上使用hook_form_alter()。 user_login表单使用user_login_default_validators()函数添加验证处理程序,所以只需更改它,以便在它们之前调用您的自定义处理程序。 http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_login_default_validators/7注意:如果您也使用了user_login_block(),则必须执行相同的操作。 –

+0

很酷,谢谢! – 9point6