当前位置: 首页 > 知识库问答 >
问题:

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

满言
2023-03-14

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

我能够实施一个案例,其中

  • 用户属于一个具有多个权限的角色

我需要实现具有多个权限的多个角色的用户。有什么指点吗?

共有2个答案

蓝侯林
2023-03-14

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

您还需要定义一个表role\u user,其中包含关于哪个用户具有哪个角色的数据。这将是一种多对多关系,因为用户可以有多个角色。

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

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

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

易刚捷
2023-03-14

如果您对自己编写代码不感兴趣,那么像Laravel permissions这样的包将完全满足您的需要。

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

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

所以你会有一个由user_id和role_I组成的user_roles表。

您还有一个role\u permissions表,其中包含role\u id和permission\u id。

这将允许您建立多对多关系和多对多关系,以直接从用户到角色以及角色到用户。

希望这能有所帮助

 类似资料:
  • 我有3个表:User、Role和具有Role\u id和User\u id的透视表RoleUser。 对于关系在我的模型我这样做: 榜样: 用户模型: 我为filter by one角色做了这项工作,效果很好: 但是现在我需要通过许多角色来过滤我的用户。 我将从我的前端发送一个数组,其中包含角色的id。 事实上,我可以得到如下角色 但我不知道如何才能获得具有此角色的用户。

  • 我试图使用Laravel构建一个(稍微复杂的)订阅服务。 订阅类型为:20份早餐的早餐订阅,在注册后30天内使用。 例如,如果用户在4月1日注册早餐订阅,他可以选择任何20天,直到4月30日。 我制作了以下表格和相应的模型: 用户模型和表 订阅表和型号 订阅用户透视(?)带有软删除的表 我已经用belongsToMany关系更新了相应的模型 用户: 订阅模式 我需要帮助解决的问题1。数据库/模型结

  • 问题内容: 我正在尝试设置具有权限的基于角色的安全性。我正在尝试与Spring-Security一起执行此操作。 我不想设置ACL,因为这似乎对我的要求来说有些过头了。 我只想拥有本文所述的简单权限和角色。不幸的是,本文没有描述如何实现给定的解决方案。 有人已经尝试过了,可以指出正确的方向吗?也许还有另一个博客条目描述了实现方式? 非常感谢你。 问题答案: 要实现这一点,您似乎必须: 创建模型(用

  • 问题内容: 我想为具有以下角色之一(ROLE1或ROLE2)的用户定义某些页面的访问权限 我正在尝试在我的spring security xml文件中进行如下配置: 我尝试了各种方法,例如: 等等 但似乎没有任何效果。 我一直在例外 要么 应该如何配置? 谢谢 问题答案: 问题是我配置了自定义 ,但没有通过其中一名选民。 通过添加到bean中来解决。

  • 问题内容: 我有一项下载文件并保存文件的服务,看来我只能指定一个权限。 要么 我都需要 问题答案: 一个Android 可以具有多个权限,但是权限是在应用程序级别而不是级别上授予的。 您的问题是您试图在文件的错误位置授予您的权限。 的属性指定实体使用服务必须拥有的权限,而不是授予的权限 。 您在您的顶层授予您的应用程序所有组件的权限:

  • 我继承了一个项目,它有一些CRUD形式...在创建表单中,我们需要创建一个和关系的条目。所以基本上我得到的是以下这些 我不确定这是否是最好的方法,但似乎有效。 我遇到的问题是,在表单中,这些参与者/评论可以编辑、添加或删除,我不确定如何更新它们。是否可以更新它们,或者删除现有关系数据并重新添加它们是否更好? 我从来没有更新过关系,只是添加了它们,所以我不确定如何开始。 任何帮助都将不胜感激。