Laravel 5.1 multiple authentication

前端 未结 5 1194
隐瞒了意图╮
隐瞒了意图╮ 2020-12-06 14:09

How can you authenticate multiple types of users in Laravel 5.1 e.g. Jobseeker, Recruiter, Admin etc.

Some of you have suggested using a single users table to store

5条回答
  •  庸人自扰
    2020-12-06 14:17

    You can achieve multiple authentication easily by pulling up the sarav/laravel-multiauth package

     composer require sarav/laravel-multiauth
    

    I assume you have separate tables for Jobseeker, Recruiter, Admin.

    Step 1 : Open app.php and replace

    Illuminate\Auth\AuthServiceProvider::class
    

    with

    Sarav\Multiauth\MultiauthServiceProvider::class
    

    Then, open up auth.php file and remove

     'eloquent',
        'model'  => 'App\User::class',
        'table'  => 'users',
        'password' => [
           'email' => 'emails.password',
           'table' => 'password_resets',
           'expire' => 60,
        ],
    ];
    

    and add the following code

    return [
    'multi' => [
        'jobseeker' => [
            'driver' => 'eloquent',
            'model'  => App\Jobseeker::class, // Model Class
            'table'  => 'jobseeker' // jobseeker table
        ],
        'recruiter' => [
            'driver' => 'eloquent',
            'model'  => App\Recruiter::class, // Model Class
            'table'  => 'recruiter' //recruiter table
        ],
        'admin' => [
            'driver' => 'eloquent',
            'model'  => App\Admin::class, // Model Class
            'table'  => 'admin' //admin table
        ],
     ],
     'password' => [
           'email' => 'emails.password',
           'table' => 'password_resets',
           'expire' => 60,
      ]
     ];
    

    Thats it!

    Now you can try login attempt by calling

    \Auth::attempt('jobseeker', ['email'=> 'johndoe@example.com', 'password' => 'secret']);
    
    \Auth::attempt('recruiter', ['email'=> 'johndoe@example.com', 'password' => 'secret']);
    
    \Auth::attempt('admin', ['email'=> 'johndoe@example.com', 'password' => 'secret']);
    

    Always remember first paramter should be your user parameter. Here I have given jobseeker for jobseeker login attempt, recruiter for recruiter attempt and admin for admin login attempt. Without the proper first parameter system will throw exception.

    For more detailed information checkout this article http://sarav.co/blog/multiple-authentication-in-laravel-continued/

提交回复
热议问题