在Magento中存储第三方服务凭据的“正确”位置在哪里?

时间:2014-12-19 16:33:23

标签: php magento

我正在实施连接到第三方API的Magento扩展。我对Magento来说是全新的,但对MVC系统很熟悉。

我的问题很简单,“我应该在哪里(以及如何?)存储用于访问此第三方API的凭据?我可以创建一个数据库表并将其存储在那里,但感觉有些过分。我见过人们提到使用Magento缓存作为键/值存储,但它听起来太脆弱。我注意到Magento似乎有某种配置对象(还没有真正挖到它),也许这是我最好的选择?

其中哪些(如果有的话)是'正确的'?从长远来看,这会让我头痛最少?

不言而喻,我需要对这些凭证进行加盐/散列,但我想同样的问题适用于“我应该在哪里储存盐”?

1 个答案:

答案 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')在代码中访问它们。希望这能让你指出正确的方向。