【问题标题】:Laravel 5.6 Auth to different tables in DBLaravel 5.6 对数据库中不同表的身份验证
【发布时间】:2018-12-07 08:05:45
【问题描述】:

Laravel 5.6 使用 Auth 和它的数据库表 - 默认情况下是 'users'。 我需要创建 2 个不同的用户 - 简单用户和用户管理员,所以他们每个人都将使用自己的 Auth 方法并连接到自己的数据库表。

例如:Auth::user(); - 使用表“用户” 我需要创建另一个身份验证,例如 Auth::admin(); - 使用表“管理员”

我该怎么做?也许复制并创建另一个身份验证?

(我正在使用 laravel 的 api 和护照)。

我不需要在用户表中创建新字段。我需要创建一个新表。

【问题讨论】:

  • 或者你可以分配角色和权限,让它在一张桌子上工作
  • 不行,每张表都有很多数据,所以不能使用角色...
  • 最好把它放在一张桌子上。你可以简单地添加一个像user_type这样的字段来区分用户。
  • 在这种情况下,也许您应该根据需要创建一个新表并将其命名为 admin。使用不同的路由,即 /admin 用于管理员登录和 /users 用于用户登录。用户将通过用户表和管理员通过管理员验证。但这会让你头疼。更好地使用权限和角色,您可以随时在用户表中添加额外的字段:)

标签: php laravel authentication


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2019-02-28
    • 2015-06-03
    • 1970-01-01
    • 2019-03-21
    • 2018-10-26
    • 2018-11-15
    • 2014-01-25
    • 2018-11-25
    • 2019-01-17
    相关资源
    最近更新 更多