Laravel角色和权限管理工具Bouncer有什么功能

发布时间:2022-11-01 09:05:07 作者:iii
来源:亿速云 阅读:84

这篇文章主要介绍了Laravel角色和权限管理工具Bouncer有什么功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Laravel角色和权限管理工具Bouncer有什么功能文章都会有所收获,下面我们一起来看看吧。

什么是 Bouncer?#

Bouncer 是一个开源包,用于动态管理数据库中的角色和权限,与 Laravel 的 Gate 完全集成。

在不深入细节的情况下,以下是其一些主要功能的简短列表:

Bouncer 最初的想法

早在 2015 年 8 月,Taylor 添加了一个 Laravel 5.2 中的新授权系统,称为 Gate。这提供了一个很好用的 API,用于应用程序中定义各种操作的权限检查,简单 定义 回调 和完整的 policies,以及根据您定义的内容在 整个系统中挂接检查权限。

当我开始使用它时,我就知道这将是所有 Laravel 应用程序的 ACL 的未来。 真是太好了,Taylor 对清晰和直观的 API 有这种惊人的感觉,而「Gate」抽象真正地揭示了这一点。

然而,内置授权系统缺少一件事:动态权限,存储在数据库中。 构建 Gate 的方式,所有检查都由应用程序中定义的硬编码函数执行,因此无法让您的管理员在运行时通过某些仪表板 UI 控制其中任何一个。 正如泰勒的 原始提交 明确指出:

[内置 Gate] 为组织逻辑提供了一种结构,该逻辑授权对实体进行操作。 它没有对「用户角色」的定义做出任何决定。

当时,还有许多其他流行的 ACL 操作系统支持在运行时调整权限,但它们有一个主要缺点:它们都是在 Laravel 的 Gate 之前构建的。它们是完全分离的系统;如果您决定使用它们,你将放弃 Laravel 的 gate 提供的所有细节和漂亮的集成。

因此,我决定构建一个开源包,它可以让您两全其美:动态数据库驱动的权限,与 Laravel 的 gate 完全集成。我们在 Laravel 5.3 中对 gate 检查做了一些改进,使其更加简化和可预测,从而更容易将这些功能存储在数据库中。

技术基础

Bouncer's 的存在理由是与 Laravel 的 gate 无缝集成的。为了实现这一点,我心中的只有一个目标:在为用户分配角色和能力时,您只需和 Bouncer 进行交互。对于实际的授权检查,整个系统中 Laravel 的钩子应该自动工作,而不需任何特殊的 Bouncer 语法。ically, without any special Bouncer syntax.

将 Bouncer 挂钩到 Laravel 的 gate 检查方式是相当简单的。Gate 让你定义 一个全局的 before 回调,它将会在任何您定义的检查之前被调用:如果您的 before 回调允许或不许与某个操作,则不会运行进一步检查。

虽然 before 回调最初是为 「允许管理员执行所有操作」之类的东西而设计的,但我立即意识到这将是连接动态检查的理想场所,允许我查询数据库以获得任何权限。这就是它最初的工作方式(我们后来将其切换为使用 after 回调 - 你可以阅读更多关于 在此线程)

文档

从一开始,文档对我来说就非常重要。 开源项目的生死取决于他们的文档,所以我希望 Bouncer 的文档尽可能做到最好。尤其是在 Laravel 生态系统中,Taylor 为细致的文档设定了极高的标准。

在某种程度上,清晰的文档有时甚至比代码本身更重要。如果不告诉你的用户如何使用你的工具,他们中很少有人会使用源代码来解决这个问题。他们只会继续做下一件事。

我将 Bouncer 的成功很大程度上归功于清晰的文档,但在这方面还有很多工作要做。作为创建者,对整个谜题有一个清晰的了解,很容易忘记刚接触该工具的人会遇到什么困难。

例如:如前所述,Bouncer 仅用于为用户分配角色和权限。实际的授权检查将像在任何标准 Laravel 应用程序中一样处理。所以我想我不必重复所有这些,因为 Laravel 文档中清楚地概述了它。尽管如此,我仍然看到人们为此苦苦挣扎。他们设置了自己的角色和权限,然后不知道从哪里开始。这是我仍然想在文档中充实的一个领域。

准备发布

将 1.0 版本推迟到现在对我的用户造成了伤害。 Bouncer 多年来一直很稳定,并在世界各地的生产中积极使用。 然而,我总是犹豫要不要发布它,因为我知道我想添加的东西太多了。 我在 播客 上与 Matt 详细讨论了这个问题:我掉进了想要在发布之前让它变得完美的陷阱,这显然是 不可能的。 正如伏尔泰 已警告:「完美是良好的敌人」。

因此,当我发布 Bouncer 1.0 版时,我仍然希望在初始版本中包含 2 个出色的功能,但没有成功:

关于“Laravel角色和权限管理工具Bouncer有什么功能”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Laravel角色和权限管理工具Bouncer有什么功能”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 查询oracle用户角色权限
  2. Jenkins用户角色权限设置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

laravel bouncer

上一篇:wpsvba如何发送邮件

下一篇:Vue中动态引入图片要require的原因是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》