Database design Laravel 7具有3个不同表的多重身份验证

Database design Laravel 7具有3个不同表的多重身份验证,database-design,laravel-7,laravel-authentication,Database Design,Laravel 7,Laravel Authentication,我是Laravel7的新手,我正在创建一个需要3个不同用户表(管理员、销售人员、仓库经理)的应用程序 每个用户都可以从单独的登录表单登录,并且具有不同的仪表板。 我想为每个用户实现身份验证,要登录到他们指定的仪表板,用户有不同的列,这就是为什么我希望将它们保存在单独的表中,而不是一个带有角色列的表中 您应该在guards and providers中的config/auth.php中添加三个表,以使auth()函数能够识别每个表:注意用您的模型名称替换它 之后,您应该为每个用户创建一个中间件来控

我是Laravel7的新手,我正在创建一个需要3个不同用户表(管理员、销售人员、仓库经理)的应用程序 每个用户都可以从单独的登录表单登录,并且具有不同的仪表板。
我想为每个用户实现身份验证,要登录到他们指定的仪表板,用户有不同的列,这就是为什么我希望将它们保存在单独的表中,而不是一个带有角色列的表中

您应该在guards and providers中的config/auth.php中添加三个表,以使auth()函数能够识别每个表:注意用您的模型名称替换它

之后,您应该为每个用户创建一个中间件来控制登录,因此您应该将其添加到中间件$routemiddleware函数中的kernel.php

'admin' => \App\Http\Middleware\AuthenticateAdmin::class,
'salesperson' => \App\Http\Middleware\AuthenticateSalesperson::class,
'manager' => \App\Http\Middleware\AuthenticateManager::class,
为每个控制器创建一个控制器:

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Hash;
use App\Admin;


class LoginController extends Controller
{
      use AuthenticatesUsers;

      public function __construct()
      {
          $this->middleware('guest');
      }

      public function login(Request $request)
    {
              $this->validate($request, [
                  'email' => 'required|email',
                  'password' => 'required',
              ]);
              if (auth()->guard('admin')->attempt(['email' => $request->input('email'), 'password' => $request->input('password')])) {
                  return redirect('*your route*');
              } else {
                  dd('your username and password are wrong.');
              }
    }

      public function getLogin()
      {
          return view('*the login form*');
      }
}
在你的Admin.php中

use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Relative extends Authenticatable
{
  use Notifiable;

    protected $guarded = [];

    protected $hidden = [
      'password'
    ];

    public function getAuthPassword()
    {
      return $this->password;
    }

}
对每个步骤重复中的最后两个步骤。如果ypu需要更多信息:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Relative extends Authenticatable
{
  use Notifiable;

    protected $guarded = [];

    protected $hidden = [
      'password'
    ];

    public function getAuthPassword()
    {
      return $this->password;
    }

}