【问题标题】:Where is the ‘correct’ location to store credentials for third-party services in Magento?在 Magento 中存储第三方服务凭据的“正确”位置在哪里?
【发布时间】:2014-12-19 16:33:22
【问题描述】:

我正在实现一个连接到第三方 API 的 Magento 扩展。我是 Magento 的新手,但总体上熟悉 MVC 系统。

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

以下哪一项(如果有)是“正确的”?从长远来看,哪个最让我头疼?

不用说,我需要对这些凭据进行加盐/哈希处理,但我想同样的问题也适用于“我应该在哪里存储盐”?

【问题讨论】:

    标签: php magento


    【解决方案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') 在您的代码中访问它们。希望这能让您指明正确的方向。

    【讨论】:

    • 哈,谢谢。不过,我不知道我应该为此加分。您确实在您的问题中明确指出了这一点。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多