我正在实现一个连接到第三方API的Magento扩展。我是Magento的新手,但总体上熟悉MVC系统。
我的问题很简单,"在哪里(以及如何?我是否应该存储用于访问此第三方 API 的凭据?我可以创建一个数据库表并将它们存储在那里,但这感觉有点矫枉过正。我看到有人提到使用Magento缓存作为键/值存储,但这听起来太脆弱了。我注意到Magento似乎有某种配置对象(还没有真正深入研究(,也许这是我最好的选择?
其中哪一个(如果有的话(是"正确的"?从长远来看,哪个会让我头痛最少?
不用说,我需要对这些凭据进行盐/哈希处理,但我想同样的问题也适用于"我应该在哪里存储盐"?
Magento的典型做法是将它们存储在数据库中。可以通过扩展中的代码定义数据库字段和用户界面以维护这些凭据。
核心代码库中的一个完美示例是运输商模块。看看app/code/core/Mage/Usa/etc/config.xml
:
...
<fedex>
<account backend_model="adminhtml/system_config_backend_encrypted"/>
<meter_number backend_model="adminhtml/system_config_backend_encrypted"/>
<key backend_model="adminhtml/system_config_backend_encrypted"/>
<password backend_model="adminhtml/system_config_backend_encrypted"/>
...
</fedex>
...
通过以这种方式存储凭据,这些字段将在Magento的管理部分中可用,业务用户可以在其中输入或更新凭据,并且它们将作为加密值存储在数据库中。您可以使用 Mage::getStoreConfig('carriers/fedex/account')
在代码中访问它们。希望这能让你指向正确的方向。