laravel中的多重身份验证

laravel中的多重身份验证,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我有三种类型的用户:管理员、客户和供应商 我想使用以下步骤进行多重身份验证 1-所有用户都将插入用户表中,我将使用“作业类型”字段区分它们 1=>管理员2=>客户3=>供应商 我的问题是如何在user.php模型中配置$gurde,因为我有多种用户类型 如果使用默认的多重身份验证: 我在admin模型中为admin表创建$gurde,或在customer模型中为customer service创建$gurdeof,我将重复电子邮件和密码等数据,如果我在前端创建视图,我将使admin和供应商再次创

我有三种类型的用户:管理员、客户和供应商

我想使用以下步骤进行多重身份验证 1-所有用户都将插入用户表中,我将使用“作业类型”字段区分它们

1=>管理员2=>客户3=>供应商

我的问题是如何在user.php模型中配置$gurde,因为我有多种用户类型

如果使用默认的多重身份验证: 我在admin模型中为admin表创建$gurde,或在customer模型中为customer service创建$gurdeof,我将重复电子邮件和密码等数据,如果我在前端创建视图,我将使admin和供应商再次创建新用户

user table :email|password
admin table  :email|password

我想让所有用户只在用户选项卡中注册电子邮件和密码等数据。

有几种方法可以实现这一点。使用闸门和/或策略可能是最好的前进方式

门很容易设置,它们在App\Providers\AuthServiceProvider类中定义

然后,在你想做检查的地方,你可以打电话给你的门,检查用户是否有权限

if (Gate::allows('edit-settings')) {
    ...
}
请注意,用户会自动传递到gate,您不必亲自传递

如果你只有几个地方需要它们,并且没有CRUD操作,那么门是好的,但是如果你需要它们来执行所有CRUD操作,那么你最好使用策略

策略在一个位置定义特定模型的所有授权。Laravel可以为您创建这些php artisan make:policy PostPolicy-model=Product,然后将您的授权逻辑放入生成的每个方法存根中

策略可以通过两种方式进行检查,要么作为路由上的中间件,要么直接在您尝试进行身份验证的用户上调用

if ($user->can('update', Product::class)) {
    ...
}
通常,你会发现需要一系列的保护措施和政策


看看Laravel网站上的,它非常全面,有很多例子。

如果我理解正确,您希望根据用户角色对用户进行身份验证,并且您不希望管理员、供应商和客户使用单独的模型?是的,我怎么做@rmclood
if ($user->can('update', Product::class)) {
    ...
}