我正在实施连接到第三方API的Magento扩展。我对Magento来说是全新的,但对MVC系统很熟悉。
我的问题很简单,“我应该在哪里(以及如何?)存储用于访问此第三方API的凭据?我可以创建一个数据库表并将其存储在那里,但感觉有些过分。我见过人们提到使用Magento缓存作为键/值存储,但它听起来太脆弱。我注意到Magento似乎有某种配置对象(还没有真正挖到它),也许这是我最好的选择?
其中哪些(如果有的话)是'正确的'?从长远来看,这会让我头痛最少?
不言而喻,我需要对这些凭证进行加盐/散列,但我想同样的问题适用于“我应该在哪里储存盐”?
答案 0 :(得分:1)
这种的典型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')
在代码中访问它们。希望这能让你指出正确的方向。