具有多个角色且具有多个权限的laravel用户

时间:2018-12-01 08:32:30

标签: laravel middleware access-control rbac

我想在laravel中创建一个RBAC系统,其中一个用户可以属于多个角色,并且每个角色可以具有多个权限。在继续请求之前,中间件应检查用户是否具有一定的权限(在其任何角色内)。

我能够实施

  • 用户属于具有多个权限的一个角色
  • 用户属于几个角色,这些角色用于确定访问控制(无权限位)

我需要使用具有多个权限的多个角色来实现一个用户。有指针吗?

2 个答案:

答案 0 :(得分:1)

如果您对自己编写代码不感兴趣,则可以使用Laravel权限之类的包来完成您想要的事情。

https://github.com/spatie/laravel-permission

否则,您需要在用户及其角色,角色及其权限之间创建数据透视表

因此,您将有一个user_roles表,其中包含user_id和role_Id。

您还将拥有一个role_permissions表,该表将具有role_id和Permission_id。

这将使您具有多对多关系,并具有许多直通关系,以直接从用户到角色以及从角色到用户。

希望有帮助

答案 1 :(得分:0)

作为概述。您需要在数据库中有一个roles表,该表定义了应用程序可以具有的不同类型的用户,例如(管理员,作者,编辑者,主持人等)

您还需要定义一个表role_user,其中包含用户具有哪个角色的数据。由于用户可以具有多个角色,因此这将是“多对多”关系。

接下来,您需要定义一个中间件CheckRole,该中间件基本上检查用户是否具有特定角色。您可以在应用程序的不同部分上使用此中间件来限制身份验证。

您可能会发现本教程很有用:

https://www.5balloons.info/user-role-based-authentication-and-access-control-in-laravel/