Create events.xml file **app/code/Vendor/Module/etc/events.xml** <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <event name="controller_action_predispatch"> <observer name="customer_controller_action_predispatch_event" instance="Vendor\Module\Observer\ForceCustomerLoginObserver" /> </event> </config> **app/code/Vendor/Module/Observer/ForceCustomerLoginObserver.php** <?php namespace Vendor\Module\Observer; use Magento\Framework\Event\ObserverInterface; class ForceCustomerLoginObserver implements ObserverInterface { /** * @var \Magento\Framework\App\Response\RedirectInterface */ protected $redirect; /** * Customer session * * @var \Magento\Customer\Model\Session */ protected $_customerSession; public function __construct( \Magento\Customer\Model\Session $customerSession, \Magento\Framework\App\Response\RedirectInterface $redirect ) { $this->_customerSession = $customerSession; $this->redirect = $redirect; } public function execute(\Magento\Framework\Event\Observer $observer) { $actionName = $observer->getEvent()->getRequest()->getFullActionName(); $controller = $observer->getControllerAction(); if($actionName == 'catalog_product_view') { if(!$this->_customerSession->isLoggedIn()) { $this->redirect->redirect($controller->getResponse(), 'customer/account/login'); } } } } **After that don't forgot to clean cache !!**