2012-10-06 11 views
7

Nó sẽ là một kinh nghiệm người dùng to lớn chúc lành để có một đăng nhập phổ quát trên các ứng dụng khác nhau của trang web của tôi. Bây giờ, tôi có một cửa hàng của Magento và một cộng đồng của hội đồng quản trị IPS. Và tôi đang cố gắng tích hợp chúng vào một đăng nhập toàn cục cho người dùng của mình.Mật khẩu được lưu trữ trong Magento ở đâu và như thế nào?

Bảng IPS cung cấp nhiều phương thức đăng nhập khác nhau và một trong số đó là Cơ sở dữ liệu ngoài cho phép tôi tích hợp nó với cơ sở dữ liệu bên ngoài để biết chi tiết người dùng.

Tuyệt vời! Vì vậy, tôi có thể liên kết IPS với cơ sở dữ liệu của Magento để xác thực thông tin người dùng hợp nhất.

Tuy nhiên, đến thời điểm này, tôi chỉ có thể tìm trường email là customer_entity.email.

Câu hỏi của tôi là:

  1. trường mật khẩu băm (table.field) là gì trong Magento?
  2. Magento tạo mật khẩu băm như thế nào? MD5? SHA1? Muối là gì (tôi đoán nó khác nhau bằng cách cài đặt nhưng nơi tôi có thể tìm thấy nó)?

Như bạn có thể thấy từ hình ảnh đính kèm, tôi cần chi tiết địa chỉ và cách Magento lưu mật khẩu để cho phép IPS sử dụng cơ sở dữ liệu của Magento làm cơ sở dữ liệu bên ngoài.

đính kèm:

enter image description here

enter image description here

Bất kỳ ý tưởng hoặc gợi ý về cách để có được điều này được thực hiện sẽ được đánh giá rất nhiều!

+0

Giải thích tuyệt vời là tại http://www.magentogarden.com/blog/how-are-passwords-encrypted-in-magento.html – pevik

Trả lời

8

Mật khẩu của khách hàng được lưu trữ trong customer_entity_varchar, đó là thuộc tính eav. Bạn không thể sử dụng chức năng cơ sở dữ liệu bên ngoài IPB. Bạn nên sử dụng Mage::getModel('customer/customer')->authenticate($logi, $password); để xác thực khách hàng trong mã của mình.

+1

cách dễ nhất là sử dụng các sự kiện magento customer_customer_authenticated và customer_register_success để treo các hành động đăng nhập/đăng ký và thêm truy vấn tùy chỉnh từ IPB. Bạn có thể sử dụng tự động tải để sử dụng API của IPB hoặc chỉ tạo mô hình tùy chỉnh và chuyển dữ liệu vào cơ sở dữ liệu của bosrd. Một cách khác là làm cho một hệ thống đăng nhập cơ sở dữ liệu phức tạp với một thực thể người dùng cho tất cả các hệ thống. Bất kỳ công cụ tích hợp tiêu chuẩn nào cũng sẽ không giúp được gì nhiều.Theo mật khẩu mặc định được tạo ra như md5 ('saltpassword'). ': Salt' cho phiên bản CE. Muối là 2 ký tự chữ và số ngẫu nhiên. –

3

Bạn có thể tìm thấy khóa mã hóa trong /app/etc/local.xml. Tôi đã không nhìn vào bảng người dùng nhưng tôi đoán sẽ là lĩnh vực băm là mật khẩu được mã hóa.

chức năng Encryption là trong Mage_Core_Model_Encryption vì vậy nếu bạn có thể truy cập vào Magento từ ban IPS của bạn, bạn có thể làm điều gì đó tương tự như:

$password = 'whatever'; //your logic provides this password 

require_once('app/Mage.php'); //path to your Magento app/Mage.php 
Mage::app(); //we can now use magento functionality 

$decrypted = Mage::getModel('core/encryption')->decrypt($password); 

Bạn sẽ cần phải làm việc ra nơi tốt nhất để đặt logic này trong để tích hợp nó, nhưng đó là một sự khởi đầu ít nhất.

+2

bạn sẽ không thể giải mã mật khẩu của khách hàng khi mật khẩu được băm (theo mặc định md5 trong CE và SHA1 trong các phiên bản EE). Khóa mã hóa được sử dụng để mã hóa dữ liệu quan trọng theo thứ tự, khóa api và mật khẩu tích hợp phần thứ ba. –