Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 设置管理员用户';直接使用密码哈希_Magento - Fatal编程技术网

Magento 设置管理员用户';直接使用密码哈希

Magento 设置管理员用户';直接使用密码哈希,magento,Magento,我有一个现有的admin\u用户,基本上我正在迁移到另一个admin\u用户记录,我想用旧记录中的值设置新记录的密码哈希 因为\u在保存之前钩住setPassword()并对其进行加密,所以这似乎是不可能的。在写这个问题的过程中,当我找到解决方法时,我会继续在这里发布我自己的答案,以防对其他人有所帮助 看起来您需要重载Mage\u Admin\u Model\u User类才能执行此操作。因为您可能会直接加载类并调用该方法来设置密码,所以您可能不需要担心重写或事件观察 我是这样做的: class

我有一个现有的
admin\u用户
,基本上我正在迁移到另一个
admin\u用户
记录,我想用旧记录中的值设置新记录的密码哈希


因为
\u在保存之前
钩住setPassword()并对其进行加密,所以这似乎是不可能的。

在写这个问题的过程中,当我找到解决方法时,我会继续在这里发布我自己的答案,以防对其他人有所帮助

看起来您需要重载
Mage\u Admin\u Model\u User
类才能执行此操作。因为您可能会直接加载类并调用该方法来设置密码,所以您可能不需要担心重写或事件观察

我是这样做的:

class Me_Mymodule_Model_Admin_User extends Mage_Admin_Model_user
{
    protected function _beforeSave()
    {
        parent::_beforeSave();

        if ($this->getPasswordHash()) {
            $this->setData('password', $this->getPasswordHash());
        }
    }
}
然后,要更改它,请执行以下操作。在我的例子中,我在自己编写的自定义迁移脚本中完成了这项工作

// This just sets the "password_hash" data on the model which has no function other
// than to be converted to the "password" value in the _beforeSave() above.
$adminUser = Mage::getModel('mymodule/admin_user')->load($id);
$adminUser->setPasswordHash('insert password hash here')->save();
setPasswordHash()
getPasswordHash()
方法是常规的Magento magic getter/setter,因此不需要在任何地方定义它们


更新:不要对回答自己的问题投反对票,这是。

你把
setPasswordHash()
call放在哪里了?(+1,幽默地欢迎你自己)哈哈,谢谢!我以为我会因为愚蠢可笑而被炒鱿鱼:)还有,有趣的是,有人真的对这件事感兴趣,我确信至少在一段时间内,我几乎是唯一一个对这件事感兴趣的人:)。好吧,如果你是说我从哪里调用它的话,它来自一个自定义迁移脚本。如果你是说我在哪里定义它,它只是一个普通的魔术二传手。我会更新答案以进行反思。啊啊啊,那是火焰。对否决票有什么解释吗?谢谢。我想你可能会被否决的原因是你问问题和回答问题的速度太快了,几乎是同步的。可能会遇到不好的情况,而你只是想获得名声,而不是帮助别人??就我对这个问题的看法而言,其他人无疑会有不同的看法。但这是堆栈溢出的一部分好处:每个人都有权发表自己的意见,不管是好是坏,社区通过投票决定什么是有用的。我不认为你需要闭嘴,不管发生什么,我关心的只是获得新信息:)