Laravel 5.4 - Disable auto login after registration

If you use default register route you can do it like this...

in RegistersUsers.php file

comment this line in register function

$this->guard()->login($user);

I hope this helps you!!


Since your RegisterController uses RegistersUsers trait, all of the trait's methods are available to RegisterController. The method you need to override, in order to prevent users to be logged in after they successfully registered is register(). Here's the initial body of the method:

public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}

The line: $this->guard()->login($user); is where the user gets logged in. You can either remove it or modify it to suit your needs.


how it goes about Laravel 6? I try to do the same thing. However, I don't think, rewritting in /vendor/... folder is good practise. I tried to overwrite function "registered", but when I define a protected function registered(...) {...} in my App/http/Controller/Auth/RegisterController.php I receive an error

Argument 1 passed to App\Http\Controllers\Auth\RegisterController::registered() must be an instance of App\Http\Controllers\Auth\Request, instance of Illuminate\Http\Request given, called in C:\wamp\www\presbyteria\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 35

I've added Auth::logout(); next to the guard in the new versions.

public function register(Request $request)
   {
   $this->validator($request->all())->validate();

   event(new Registered($user = $this->create($request->all())));

   \Auth::logout();

   return $this->registered($request, $user)
                ?: redirect($this->redirectPath());
}