Customer Logged in Programmatically using Magento 2.

You can do customer logged in Programmatically using Magento 2.

You required only Customer id to logged-in customer programmatically without going to the login page.

You need to first get Customer object using CustomerRepositoryInterface interface. Use Customer Object to customer session with setCustomerDataAsLoggedIn function.

use Exception;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Model\Session as CustomerSession;
use Magento\Framework\Exception\NoSuchEntityException;

class CustomerLogin {

    public function __construct(
        CustomerRepositoryInterface $customerRepository,
        CustomerSession $customerSession
    ) {
        $this->customerRepository = $customerRepository;
        $this->customerSession = $customerSession;

     * Login Customer by Customer Id
     * @param int $customerId
     * @return bool
     * @throws Exception
    public function loginCustomerById(int $customerId)
        try {
            // @var CustomerRepositoryInterface $customer
            $customer = $this->customerRepository->getById($customerId);
        } catch (NoSuchEntityException $exception) {
            throw new Exception(__('The wrong customer account is specified.'));

        return true;

Using the above way, You can do Programmatically customer login by customer id.

Pass Customer Id in above function to login Customer.

Check Customer Logout programmatically in Magento 2.