众所周知,在很多情况下,我们需要检查客户当前是否在您的网站上登录。例如,有一些针对已登录客户的特殊促销活动。今天,这篇博客将向您展示如何在 Magento 2 中检查客户的登录状态。

在 Magento 中,会话在增强用户体验方面发挥着重要作用,它们在收集有关用户访问的重要统计数据方面也很有用。会话的特点是在服务器端存储与用户交互相关的信息。我为您推荐此解决方案:

使用Magento\Customer\Model\Session::isLoggedIn()方法。

isloggedIn()方法返回一个布尔值,指示登录客户的状态。访客客户或未登录的客户浏览该网站将返回 false,反之亦然。

要在控制器、助手或观察者中使用此类......您可以按照以下步骤操作:

首先,您需要在构造函数方法中注入以下类:/Magento/Customer/Model/Session.

protected $_session;

public function __construct(
...
\Magento\Customer\Model\Session $session,
...
) {
...
$this->_session = $session;
...
}

然后在您的班级中,在任何函数中使用以下代码来检查客户是否已登录:

if ($this->_session->isLoggedIn()) {
// Customer is logged in
} else {
// Customer is not logged in
}

使用控制器类的代码示例:

将 [Vendor] 和 [Module] 替换为您的供应商和模块名称

<?php
namespace [Vendor]\[Module]\Controller\Index;

use Magento\Framework\App\Action\Context;
use Magento\Framework\App\Action\Action;
use Magento\Customer\Model\Session;

class ClassName extends Action
{
    protected $_session;

    public function __construct(Context $context, Session $session) 
    {
        parent::__construct($context);
        $this->_session = $session;
    }

    public function execute()
    {
        // by using Session model
        if($this->_session->isLoggedIn()) {
            //customer has logged in
            // your code in here
        }else{
            //Customer is not logged in
            // your code in here
        }
    }
}

我们希望本文能帮助您检查客户是否已登录 Magento 2。祝您编码愉快!