如何通过laravel 5.6中的角色保护管理员区域免受用户攻击?

时间:2018-06-25 13:09:03

标签: laravel-5.5 acl user-roles

我一直在寻找简单的Laravel 5.6+版本角色和用户解决方案。 我想要一张users桌子。因此,我在表中将user_type添加为

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

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

1 个答案:

答案 0 :(得分:1)

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

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

因此,在User模型中,您可以创建类似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模型中,因此您还可以为常规用户模型编写$user->isAdmin()