Tôi đang tìm kiếm trong Magento Lớp đăng nhập một Khách hàng và tôi không tìm thấy vị trí của nó.
Tôi cần có thể đăng nhập người dùng bên ngoài một Magento.
Bất kỳ ý tưởng?
Tôi đang tìm kiếm trong Magento Lớp đăng nhập một Khách hàng và tôi không tìm thấy vị trí của nó.
Tôi cần có thể đăng nhập người dùng bên ngoài một Magento.
Bất kỳ ý tưởng?
Câu trả lời:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); // Tải khách hàng $ customer = $ objectManager-> tạo ('Magento \ Khách hàng \ Mô hình \ Khách hàng') -> tải (2); // 2 là ID khách hàng // Tải phiên khách hàng $ customerSession = $ objectManager-> tạo ('Magento \ Khách hàng \ Mô hình \ Phiên'); $ customerSession-> setCustomerAsLoggedIn ($ khách hàng); if ($ customerSession-> isLoggedIn ()) { tiếng vang "Khách hàng đã đăng nhập"; } khác { echo "khách hàng không đăng nhập"; }
Một cách tốt hơn hiện nay với Magento 2 là:
được bảo vệ $ _customerFactory; được bảo vệ $ _sessionFactory; chức năng công cộng __construct ( ... \ Magento \ Khách hàng \ Mẫu \ Khách hàng $ Khách hàng $, \ Magento \ Khách hàng \ Model \ sessionFactory $ sessionFactory, ... ) { ... $ this -> _ customerFactory = $ customerFactory; $ this -> _ sessionFactory = $ sessionFactory; ... }
Bây giờ hãy nói rằng đây là trên Bộ điều khiển Magento 2, sau đó chúng tôi có phần dưới đây:
thực thi chức năng công cộng () { ... $ customer = $ this -> _ customerFactory-> create () -> load ($ id) // $ id là id khách hàng bạn muốn tải $ sessionManager = $ this -> _ sessionFactory-> create (); $ sessionManager-> setCustomerAsLoggedIn ($ khách hàng); ... }
Cách tốt nhất là luôn luôn sử dụng phép nội xạ phụ thuộc để truy xuất các nhà máy mô hình hoặc giao diện cho công cụ bạn muốn sử dụng thay vì nhận các phiên bản trình quản lý đối tượng.
Hãy xem ứng dụng / mã / Magento / Khách hàng / Trình điều khiển / Tài khoản / LoginPost.php
class LoginPost extends \Magento\Customer\Controller\AbstractAccount
{
....
public function execute()
{
if ($this->session->isLoggedIn() || !$this->formKeyValidator->validate($this->getRequest())) {
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('*/*/');
return $resultRedirect;
}
if ($this->getRequest()->isPost()) {
$login = $this->getRequest()->getPost('login');
if (!empty($login['username']) && !empty($login['password'])) {
try {
$customer = $this->customerAccountManagement->authenticate($login['username'], $login['password']);
$this->session->setCustomerDataAsLoggedIn($customer);
$this->session->regenerateId();
....