设置系统配置字段的默认值很好理解(通过@alan storm 的Chapagain 和blog post),但密码字段不同,因为它们在保存到数据库时被加密。因此,当 Magento 从 config.xml 中读取默认值时,它会尝试解密该值,但如果默认值是明文,则会失败。
是否有 XML 帮助程序或进程(除了使用 $setup->setConfigData('config/path/here', md5('default'))
创 build 置脚本)来指定这些默认值?
最佳答案
我不是 100% 确定(这是一个快速的 grep
),但我认为密码加密发生在
File: app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Encrypted.php
protected function _beforeSave()
{
$value = (string)$this->getValue();
// don't change value, if an obscured value came
if (preg_match('/^\*+$/', $this->getValue())) {
$value = $this->getOldValue();
}
if (!empty($value) && ($encrypted = Mage::helper('core')->encrypt($value))) {
$this->setValue($encrypted);
}
}
请记住,这是一种加密,而不是散列。由于您正在存储要在某处使用的密码(最常见的是支付 API),因此 Magento 需要能够解读已加扰的内容。因此,您可以使用核心助手的 encrypt
方法生成这些值。你也可以尝试这样的事情
$o = Mage::getModel('adminhtml/system_config_backend_encrypted');
$o->setData('value','encrypted or unencrypted value');
$o->beforeSave(); //to encrypt the value
$o->afterLoad(); //to unencrypted the value
$password = $o->getValue(); //fetch the value
请记住,每个商店都有自己的加密 key ,因此这对分发模块没有用。
您还应该查看 backend_model
config.xml
加载和处理中的属性(自链接免责声明,未在 Internet 上的其他任何地方记录)。
希望对您有所帮助。
关于xml - 在 Magento 系统配置中为密码字段设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149615/