Laravel 5.6 对数据库中不同表的身份验证
Posted
技术标签:
【中文标题】Laravel 5.6 对数据库中不同表的身份验证【英文标题】:Laravel 5.6 Auth to different tables in DB 【发布时间】:2018-12-07 08:05:45 【问题描述】:Laravel 5.6 使用 Auth 和它的数据库表 - 默认情况下是 'users'。 我需要创建 2 个不同的用户 - 简单用户和用户管理员,所以他们每个人都将使用自己的 Auth 方法并连接到自己的数据库表。
例如:Auth::user(); - 使用表“用户” 我需要创建另一个身份验证,例如 Auth::admin(); - 使用表“管理员”
我该怎么做?也许复制并创建另一个身份验证?
(我正在使用 laravel 的 api 和护照)。
我不需要在用户表中创建新字段。我需要创建一个新表。
【问题讨论】:
或者你可以分配角色和权限,让它在一张桌子上工作 不行,每张表都有很多数据,所以不能使用角色... 最好把它放在一张桌子上。你可以简单地添加一个像user_type
这样的字段来区分用户。
在这种情况下,也许您应该根据需要创建一个新表并将其命名为 admin。使用不同的路由,即 /admin 用于管理员登录和 /users 用于用户登录。用户将通过用户表和管理员通过管理员验证。但这会让你头疼。更好地使用权限和角色,您可以随时在用户表中添加额外的字段:)
【参考方案1】:
您必须为管理员身份验证创建一个中间件。输入以下内容:
php artisan make:middleware Admin
这将创建一个名为 Admin.php 的中间件文件
在Kernel.php上注册中间件
'admin' => \App\Http\Middleware\Admin::class
将管理中间件添加到 route.php 文件中的路由
get('protected', ['middleware' => ['auth', 'admin'], function()
return "this page requires that you be logged in and an Admin";
]);
将 isAdmin() 方法添加到 User 模型中,用于检查它是否是管理员。
public function isAdmin()
return $this->admin; // this looks for an admin column in your users table
【讨论】:
以上是关于Laravel 5.6 对数据库中不同表的身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.6 护照 API 身份验证在获取请求中不起作用
该页面因不活动而过期。请刷新并重试。 laravel 5.6 使用 laravel 的身份验证
Laravel 5.6 - Passport JWT httponly cookie SPA 身份验证用于自用 API?