我想在laravel中创建一个RBAC系统,其中一个用户可以属于多个角色,并且每个角色可以具有多个权限。在继续请求之前,中间件应检查用户是否具有一定的权限(在其任何角色内)。
我能够实施
我需要使用具有多个权限的多个角色来实现一个用户。有指针吗?
答案 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/