我在外部php文件中创建此代码以获取用户信息:
$customerCollection = Mage::getResourceModel('customer/customer_collection')
->addNameToSelect()
->addAttributeToSelect('email')
->joinAttribute('postcode', 'customer_address/postcode', 'default_billing', null, 'left')
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');
我想在我的请求中也获得用户的密码。
我该怎么做?
非常感谢。
答案 0 :(得分:4)
要回答您的意见,如果您需要明文密码,那么没有解决方案,那就是非常好的事情。如果您能够轻松检索客户的密码,那就意味着攻击者也具备此功能。
为防止这种情况发生,Magento会对您的密码进行哈希处理(使用MD5或SHA1,具体取决于您的Magento版本),并包含“salt”值以增加密码的复杂性。这是标准的加密实践。
您发布的链接显示了如何让客户使用自己的密码一次登录多个网站。除了该页面上的代码不是非常好的事实之外,它不会解决您的问题。
如果您需要以前端用户身份登录,可以使用模块执行此操作,也可以编写自己的模块。基本上,检查您是否具有有权连接到用户帐户的有效管理会话,并强制登录凭据进入会话。请注意,从安全角度来看,这已经存在问题,但可能对您的业务有所帮助。
如果您尝试登录您作为用户控制的另一个系统,那么您基本上无法在该平台上编写相同的模块。如果您确实拥有/找到可以检索用户密码的平台,请停止使用它,直到修补该缺陷为止。对于任何处理敏感信息(例如客户信息,付款信息)的系统而言,这将是一个巨大的危险信号。
如果您有任何其他问题(或者如果您提供有关您想要完成的更多细节),我将很乐意为您提供帮助。希望有所帮助!
谢谢, 乔
答案 1 :(得分:1)
如果您有客户电子邮件,可以通过以下方式获取客户的哈希密码。
$customer_password = Mage::getModel("customer/customer")->setWebsiteId(Mage::app()
->getWebsite()->getId())->loadByEmail($customer_email)->getPasswordHash();
希望这有助于:)
答案 2 :(得分:0)
我已经在我的博客上更新了我的连接代码,
你只需要在你使用的控制器的connectasAction中通过它并获得正确的参数,它就会摇滚:
http://benjion.wordpress.com/2011/04/29/magento-se-connecter-en-tant-que-client-depuis-ladmin/
对于有问题的人:给我发电子邮件:b-n-j(at)live.com
答案 3 :(得分:0)
您可以通过这种方式获取客户的哈希密码(假设您希望客户根据电子邮件地址):
$customer = Mage::getModel('customer/customer_api');
$data = $customer->items(array('email' => customeremail));return $data['password'];
希望这有助于:)