【发布时间】:2015-10-28 03:33:52
【问题描述】:
我使用的是 magento 版本 1.9.0.1。
为了切换到 magento 的目的,我需要在 magento 框架之外为客户创建一个登录功能。
我查看了 magento 用于散列和验证密码的方法,但该方法似乎不再有效。
在我用来验证 magento 之外的用户登录的代码下方。这段代码只是为了尝试概念验证,并没有在实际环境中使用,原因很明显:)。
function checkPassword($entity,$passwordInput){
$query = mysql_query("SELECT value FROM customer_entity_varchar WHERE entity_id = '$entity' AND attribute_id = '12' LIMIT 1");
$fetch = mysql_fetch_object($query);
$fetch_data = explode(':',$fetch->value);
$hashed_password = $fetch_data['0'];
$salt = $fetch_data['1'];
$hashInput = md5($passwordInput . $salt);
if($hashInput == $hashed_password){
return 'Success';
}
else{
return 'Failure';
}
}
$entity是邮箱验证后传递的entity_id,
$passwordInput是登录表单中输入的密码。
它返回失败。我对此并不感到惊讶,因为当我返回 $hashInput 并将其与 $hashed_password 进行比较时,情况就不一样了。
Magento 散列密码的方式是否已更改?还是我的代码有错误?
【问题讨论】:
-
你解决了这个问题吗?如果是这样,您可以发送解决方案吗?
-
是的,已经有一段时间了,但上面的代码确实有效(仅适用于客户)。我犯了一个愚蠢的错误并且发布了错误的数据($passwordInput 不正确)因此它显然返回了失败。不过不要在实际环境中使用此代码。
标签: validation magento login md5 saltedhash