Laravel Custom Authentication by Using Different Table

Web Developer Kaustubh
3 min readDec 1, 2019


For Laravel custom login, we have to follow following steps.


A]Providers:- This defines how the users are actually retrieved out of your database or other storage mechanisms.

Open config/auth.php file and create new providers in providers array.

‘AccountUser => [
‘driver’ => ‘eloquent’,
‘model’ => App\Models\AccountUser::class,

This means we are creating a new AccountUser provider using eloquent driver and the model used for the eloquent driver is App\Models\ AccountUser::class.

B]Guards :- Guards define how users are authenticated for each request.
add the AccountUser guard in the guard key in config/auth.php

‘AccountUser => [
‘driver’ => ‘session’,
‘provider’ => ‘AccountUser,

This means, we are creating new ` AccountUser ` guard which use`session` driver and using user provider called ` AccountUser `, which we created before

2]Create a model for your authentication table.


php artisan make:model Model/AccountUser
AccountUser Model

Illuminate\Foundation\Auth\User is class that responsible to handle
Laravel authentication So we just need to extend our to get all the auth related methods.
I have override getAuthPassword() method and define password column as the password for hash password.

3]Create Routes


4] Controller for Home page


To restrict only account user can access to this HomeController, I’ve added in the constructor auth: account middleware — which means only authenticated user with account guard can access to this controller.

5]Create a login controller

<?phpnamespace App\Http\Controllers\expense;use App\AccountUser;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Controllers\Auth\LoginController as BaseLoginController;
use Illuminate\Support\Facades\Auth;
class LoginController extends BaseLoginController
protected $redirectTo = ‘expanse/home’;
public function __construct()
public function showLoginForm()
return view(‘expanse.auth.login.login’);
public function username()
return ‘username’;
protected function guard()
return Auth::guard(‘account’);
public function myLogout(Request $request)
$request->session()->invalidate();return $this->loggedOut($request) ?: redirect(‘expanse/login’);}

In LoginController, I have added middleware guest: account, which it will redirect the user to the homepage if logged in as user with account guard, else will redirect back to the welcome page.
Then I have showLoginForm() overwrite, which to display Account User login .
The username() method get overwritten to because we want username column as user name rather
Then default email id

I do overwrite the guard() method, which should return account guard



May redirect to home page to avoid it, change in RedirectIfAuthenticated
Middleware to

if (Auth::guard($guard)->check()) {
return redirect(‘expanse/home’);

After implementing this your functionality will be completed



Web Developer Kaustubh

Sr.Web developer. love to code. PHP , Javascript, Mysql, Laravel, Jquey, git, project planing,Linux