Magento 2 – Redirect Customers to Home Page or Previous Page After Login/Create Account

dashboardmagento2redirect

I am trying to redirect to user after login or creating account to either home page or previous page. My controller code is following it is not able to login or create an account.

<?php
/**
 *
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace PinkBlue\Redirect\Controller\Index;

use Magento\Customer\Model\Registration;
use Magento\Customer\Model\Session;
use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\App\Action\Context;

class Redirect extends \Magento\Customer\Controller\AbstractAccount
{
    /** @var Registration */
    protected $registration;

    /**
     * @var Session
     */
    protected $session;

    /**
     * @var PageFactory
     */
    protected $resultPageFactory;

    /**
     * @param Context $context
     * @param Session $customerSession
     * @param PageFactory $resultPageFactory
     * @param Registration $registration
     */
    public function __construct(
        Context $context,
        Session $customerSession,
        PageFactory $resultPageFactory,
        Registration $registration
    ) {
        $this->session = $customerSession;
        $this->resultPageFactory = $resultPageFactory;
        $this->registration = $registration;
        parent::__construct($context);
    }

    /**
     * Customer register form page
     *
     * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
     */
    public function execute()
    {
        if ($this->session->isLoggedIn() || !$this->registration->isAllowed()) {
            /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
            $resultRedirect = $this->resultRedirectFactory->create();
            $resultRedirect->setPath('*/*');
            return $resultRedirect;
        }
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        //$currentUrl = $objectManager->get('Magento\Framework\UrlInterface')->getCurrentUrl();
        $catalogSession = $objectManager->create('Magento\Catalog\Model\Session');
        $previousUrl = $this->_redirect->getRefererUrl();
        $catalogSession->setCustomerRedirectUrl($previousUrl);


        /** @var \Magento\Framework\View\Result\Page $resultPage */
        $resultPage = $this->resultPageFactory->create();
        return $resultPage;
    }
}

Best Answer

You can disable the redirect.

  1. On the Admin sidebar, tap Stores. Then under Settings, choose Configuration.
  2. In the panel on the left, under Customers, choose Customer Configuration.
  3. Expand the Login Options section.
  4. Set Redirect Customer to Account Dashboard after Logging in to one of the following:

    • Yes - The account dashboard appears when customers log in to their accounts.
    • No - Customers can continue shopping after logging in to their accounts.
  5. When complete, tap Save Config.

  6. Click the Cache Management link in the yellow modal that shows up.

enter image description here

  1. Select the Configuration and Page Cache checkboxes.

enter image description here

  1. Click Submit to refresh the two selected cache types.

enter image description here


Magento Docs are your friend.

Cheers!