Login programmatically as a user | Drupal 8

Login programmatically as a user

Submitted by editor on Wed, 12/09/2015 - 17:25

How to login programmatically as a user  in Drupal 8 ?
How to autologin in D8?

$user = User::load($uid);


How do you trigger this way of login? Does the code need to be in the controller?

Vindesh mohariya (not verified)

Mon, 08/01/2016 - 12:55

Sometimes we need to login into our Drupal site not through the regular login form. For example if we have trouble with login form or maybe we just forgot our password... Here are few ways to login into your Drupal site not through login form.

For Drupal 8 you just need to create file your_auto_login.php in the Drupal root directory, put there the next code and open this file in your browser:


use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;

$autoloader = require_once 'autoload.php';

$kernel = new DrupalKernel('prod', $autoloader);

$request = Request::createFromGlobals();
$response = $kernel->handle($request);

// ID of the user.
$uid = THE_AUTOMATIC_USER_ID; //Do not use 1 because it is the super admin
$user = Drupal\user\Entity\User::load($uid);


$kernel->terminate($request, $response);


When I am using this code in a custom module, I am getting below error

"InvalidArgumentException: Cannot redirect to an empty URL. in Symfony\Component\HttpFoundation\RedirectResponse->setTargetUrl() (line 76 of /websites/www/html/drl/vendor/symfony/http-foundation/RedirectResponse.php) #0 /websites/www/html/drl/vendor/symfony/http-foundation/RedirectResponse.php(39): Symfony\Component\HttpFoundation\RedirectResponse->setTargetUrl(NULL) #1 /websites/www/html/drl/sites/grants/themes/grants/grants.theme(1536): Symfony\Component\HttpFoundation\RedirectResponse->__construct(NULL) #2 [internal function]: custom_login_user_login(Object(Drupal\user\Entity\User)) #3 /websites/www/html/drl/core/lib/Drupal/Core/Extension/ModuleHandler.php(402): call_user_func_array('custom_login_us...', Array) #4 /websites/www/html/drl/core/modules/user/user.module(559): Drupal\Core\Extension\ModuleHandler->invokeAll('user_login', Array) #5 /websites/www/html/drl/your_auto_login.php(12): user_login_finalize(Object(Drupal\user\Entity\User)) #6 {main}."


Can you please help me where the thing is going wrong.

Raghvendra Gupta (not verified)

Thu, 08/04/2016 - 15:00

You need to put index.php at root
$uid ='Your User ID Here';
$account = \Drupal\user\Entity\User::load($uid);
\Drupal::service('session')->set('uid', $account->id());
\Drupal::moduleHandler()->invokeAll('user_login', array($account));

$uid ='Your User ID Here';
$user = Drupal\user\Entity\User::load($uid);


Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.