【问题标题】:Change the customer password field Magento更改客户密码字段 Magento
【发布时间】:2012-03-25 22:18:53
【问题描述】:

谁能解释一下 magento 客户登录的工作原理。

其实我的情况有点奇怪。我需要将所有客户从现有网站复制到新的 magento 网站(我希望我的客户使用相同的用户名密码登录新网站)。我知道旧网站中的密码是如何加密的(使用带盐的普通 php encrypt() 函数),但我无法解密它们。所以我想在客户帐户中添加一个名为“旧密码”的新字段(我按照this 博客在客户帐户中创建新字段)。 我现在想要的是,在导入客户时,将旧的加密密码保存在“旧密码”字段中。当客户尝试登录时,它应该使用旧的加密方法将密码与 oldpassword 字段匹配。如果密码匹配,它应该生成标准的magento密码并将其保存在默认密码字段中。所以下次客户尝试登录时,应该检查默认密码字段是否为空,然后正常登录。

添加

还在等待帮助

我已经覆盖了客户->advanceContoller,但不太确定要在 loginPostAction 中进行哪些更改。

【问题讨论】:

    标签: magento passwords account


    【解决方案1】:

    请转到页面:app/code/core/Mage/Customer/Model/Customer.php

    可以看到函数public function authenticate($login, $password)

    你也可以看到

     /**
         * Validate password with salted hash
         *
         * @param string $password
         * @return boolean
         */
        public function validatePassword($password)
        {
            if (!($hash = $this->getPasswordHash())) {
                return false;
            }
            return Mage::helper('core')->validateHash($password, $hash);
        }
    
    
        /**
         * Encrypt password
         *
         * @param   string $password
         * @return  string
         */
        public function encryptPassword($password)
        {
            return Mage::helper('core')->encrypt($password);
        }
    
        /**
         * Decrypt password
         *
         * @param   string $password
         * @return  string
         */
        public function decryptPassword($password)
        {
            return Mage::helper('core')->decrypt($password);
        }
    

    请检查此文件。

    【讨论】:

    • 我已经看到了这些方法,但是通过查看这些方法,您不知道如何将密码保存在 oldpassword 字段而不是普通密码字段中。在导入客户时,我希望所有密码都转到 oldpassword。当尝试登录时,匹配 oldpassword 字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多