模型是一个用户有很多角色,一个角色有很多用户
用户模型
public function roles()
{
return $this->belongsToMany('App\Rol','usuarios_roles','idusuario','idrol');
}
好榜样
public function usuarios()
{
return $this->belongsToMany('App\User','usuarios_roles','idusuario','idrol');
}
我看过文档,但这些例子对我不起作用。我需要的是按角色限制路线。仅示例具有角色视图的用户可以访问路由“ users-home ”。create角色可以访问路由users-createNew。这是在哪里定义的?在路线中(我对此表示怀疑),在创建文件的策略中?或在 authServicePrivider 中。我很困惑
终于我找到了答案。我使用了中间件。我更喜欢它,而且我更容易理解。
创建中间件。
在位于 http/kernel 的内核中注册它。在 routeMiddleware 部分
请注意,角色是我将用来指代中间件的别名。
我在路线上应用过滤器。路径/web.php 中的文件
请注意,只有具有角色view、insert、admin的用户才能看到该路径。它们用分号分隔,因为用逗号分隔对我不起作用。
在我的用户模型中
// hasRole 检查用户是否在角色列表中具有特定角色或只有一个。角色数组。
它可以通过多种方式完成,但我认为最简单的方式是在请求中,它与路由的相应控制器相关联,使用方法
authorize()
并依赖策略。下面我将(或多或少地)向您展示这是如何在生产中的实际项目中实现的。
政策:
要求:
用户型号:
在这里,您定义了 hasRole() 方法,但是您想实现它。
正如您在代码中看到的那样,在这种情况下,有一个 Group 模型,它的工作方式与您的 Role 模型非常相似。