Authentication Defaults
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
Authentication Guards
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
'student' => [
'driver' => 'session',
'provider' => 'students',
]
],
User Providers
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'students' => [
'driver' => 'eloquent',
'model' => App\Student::class,
]
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
when i try to login using student table username, password its not login but when i change the
Auth Defaults to students
'defaults' => [
'guard' => 'api',
'passwords' => 'students',
],
and api to students provider
'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
its login using students table data but the users table datas not allow to login.
How can i implement this two users table to login??
thanks in advance
you should pass guard name to auth function :
auth('students')->login();
or
Auth::guard('students')->login()
or you override default guard by passing there to auth middleware:
Route::group(['middleware' => ['auth:students'] ], function(){
//your routes here
});
Related
In my Laravel project I've implemented users' authentication using JWT, socialite and dingo.
Now I have other users which are in another table other than users table -let's call it 'doctors'- and i want to authenticate them.
How to separate the sessions of the two tables even though the configuration for authentication is
//config/auth.php
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
i have to edit config/auth to
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'user' => [
'driver' => 'jwt',
'provider' => 'users',
],
'hospitalization' => [
'driver' => 'jwt',
'provider' => 'hospitalizations',
]
],
and use Auth::guard('hospitalization') when i need to separate
I made changes in auth file but still, I am getting an error.
Argument 2 passed to Illuminate\Auth\SessionGuard::__construct() must
be an instance of Illuminate\Contracts\Auth\UserProvider, null given,
called in
C:\LMS\vendor\laravel\framework\src\Illuminate\Auth\AuthManager.php on
line 123
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'admin1' => [
'driver' => 'eloquent',
'model' => App\RegisterOperation::class,
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'user' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin1',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
],
];
correct your guard, you have something missing under your providers
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'user' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin1',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin1' => [
'driver' => 'eloquent',
'model' => App\RegisterOperation::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
],
];
Use this package It you give the best support for multiple role based user
https://github.com/Zizaco/entrust
I got exception after i made multi auth in my project :
Argument 2 passed to Illuminate\Auth\SessionGuard::__construct() must be an instance of Illuminate\Contracts\Auth\UserProvider, null given, called in D:\xaamp\htdocs\laravelapi\vendor\laravel\framework\src\Illuminate\Auth\AuthManager.php
Here is a picture:
I don't get it, please help, thanks.
here is the auth.php config file
'defaults' => [
'guard' => 'web',
'passwords' => 'user',
], 'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'library' => [
'driver' => 'session',
'provider' => 'libraries',
],
],'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'libraries' => [
'driver' => 'eloquent',
'model' => App\Library::class,
],
and i made for each guard loginController and login views
I am trying to do multiple authentication with different tables. And i am also adding these tables in auth.php But When i attempt to login the error show Auth[] not define.
'defaults' => [
'users'=>[
'guard' => 'users',
'passwords' => 'users'
],
'branch'=>[
'guard' => 'branch',
'password' => 'branch'
]
],
'guards' => [
'users' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'branch'=> [
'driver' => 'session',
'provider' => 'branch',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'branch' => [
'driver' => 'eloquent',
'model' => App\Branch::class,
],
],
I'm just upgrade From laravel4.2 to laravel5.3.19 now i want to access Authentication data by below method
1: Auth::employees()->attempt($data)
2: Auth::admin()->logout()
3: Auth::admin()->get()->email
.................................
Example: Auth::guard->guardName->property.
I think All of those method should be call
1:Auth::user()->id
But i don't want to correct all old method because they used a lot of in this system so i want to find the solution by keeping those method as the same. And I have configured Auth.php in Configure directory as below but it simply not work as expected.
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin'
],
'employee' => [
'driver' => 'session',
'provider' => 'employee'
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'employee'=>[
'driver'=>'eloquent',
'model'=>App\Models\Employee::class
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class
],
],
Please help.