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