如何通过 laravel 5.6 中的角色保护用户管理区域?

Posted

技术标签:

【中文标题】如何通过 laravel 5.6 中的角色保护用户管理区域?【英文标题】:How to protect admin area from users by role in laravel 5.6? 【发布时间】:2018-12-04 01:51:22 【问题描述】:

我一直在寻找简单的 Laravel 5.6+ 版本角色和用户解决方案。 我想要一张users 表。所以我在我的表中添加user_typestring in

$table->enum('role', ['admin', 'user']);

我应该创建或更新哪些文件来保护/admin 路由下的所有内容。并且不要让admins 路由用于users

【问题讨论】:

【参考方案1】:

您应该创建一个在所有 /admin 路由中都处于活动状态的中间件。在此中间件中,您应该检查登录的用户 (Auth::user()) 是否具有“管理员”角色。

Auth::user() 引用User-模型。

所以在User-model 中你可以创建一个类似isAdmin() 的函数:

public function isAdmin()

    return $this->role === 'admin'

在中间件(或任何你想要的地方)你可以写

if(Auth::user()->isAdmin()) 
    // do something if user is admin
 else 
    // do something if user is not admin

由于它在User-model 中,您也可以为普通用户模型编写$user->isAdmin()

【讨论】:

以上是关于如何通过 laravel 5.6 中的角色保护用户管理区域?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.6和TCPDF公钥加密

如何根据用户在 Laravel 5 中的角色选择用户?

Laravel 5.4 如何通过表单请求为用户分配角色?

在 laravel 中使用中间件保护路由

Laravel: 使用isAdmin列检查用户是否是管理员?

如何根据 laravel 中的用户角色管理控制器方法?