Laravel 7 multi-auth与3个不同的表



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

您应该将config/auth.php中的三个表添加到保护程序和提供程序中,以使auth((函数识别每个表:请注意,将其替换为您的模型名称

'guards' => [
'admin' => [
'driver'     => 'session',
'provider'   => 'admin',
],
'salesperson' => [
'driver'     => 'session',
'provider'   => 'salesperson',
],
'manager' => [
'driver'     => 'session',
'provider'   => 'manager',
],
],
'providers' => [
'admin' => [
'driver' => 'eloquent',
'model' => AppAdmin::class,
],
'salesperson' => [
'driver' => 'eloquent',
'model' => AppSalesperson::class,
],
'manager' => [
'driver' => 'eloquent',
'model' => AppManager::class,
],
],

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

'admin' => AppHttpMiddlewareAuthenticateAdmin::class,
'salesperson' => AppHttpMiddlewareAuthenticateSalesperson::class,
'manager' => AppHttpMiddlewareAuthenticateManager::class,

为每个创建一个控制器:

use AppHttpControllersController;
use IlluminateHttpRequest;
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateSupportFacadesHash;
use AppAdmin;

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 IlluminateDatabaseEloquentModel;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;
class Relative extends Authenticatable
{
use Notifiable;
protected $guarded = [];
protected $hidden = [
'password'
];
public function getAuthPassword()
{
return $this->password;
}
}

对每一个都重复最后两个步骤。如果ypu需要更多信息:https://laracasts.com/discuss/channels/laravel/multi-auth-login-with-single-table-user-using-middleware-in-laravel

最新更新