Laravel 访问控制列表(ACL) 的最简实现方式

翻译 Summer ⋅ 于 2个月前 ⋅ 最后回复由 张浩浩浩浩 1个月前 ⋅ 1217 阅读 ⋅ 原文地址

站点的翻译文章创建时,您将第一时间收到通知。

这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

file

当涉及到 ACL (访问权限控制列表)的时候,我们经常会感觉很复杂?,因为要创建很多的角色表以及用户和角色的中间表,还有多对多的关系配置等等事情。现在,我会展示一种最简单的方式去实现 ACL,这个方式不用创建额外的表以及维护表之间的关系。?

如果你不了解什么是 ACL ! 它就是一个用户访问级别的控制,不同级别的用户有不同的访问权限。假设现在有一个内容管理系统,里面有可以访问所有菜单的管理员,还有只能创建和编辑文章的 author 角色。 ACL 就是让你来限制用户的访问权限。就是这么简单?

接下来,我们开始编码实现这个简单的 ACL ?

miss201 翻译于 2个月前

查看其他 1 个版本

第一步

在 users 表中添加一个新的字段。(user_type)

file

用户的类型字段

当然,现在对 user 表进行迁移:) ?

在 user_type 这个字段中,存储用户的类型,它的值分别为('admin', 'author','editor','whatever')

miss201 翻译于 2个月前

第二步

给用户创建一个策略类。打开项目下的 'app/Providers/AuthServiceProvider.php' 文件

file

注册用户的类型策略到项目中

不要忘了在 'app/Providers/AuthServiceProvider.php' 文件的顶部导入
GateContract。 ?

file

如上图,在文件顶部导入 GateContract

miss201 翻译于 2个月前

查看其他 1 个版本

第三步

你已经完成了 ACL  !!!!!! ?

现在,是时候去使用它们了 ?

在视图中的用法

在视图中,你可以使用 @can 以及 @cannot 等一系列的指令.

在视图中,针对不同的用户类型,你可以使用上面这些指令来展示或者隐藏某些视图。

file

只有 Admin 角色可以查看到上面这些菜单

file

只有 Editors 角色可以查看到上面这些菜单

file

只有 Authors 角色可以查看到上面这些菜单

希望你已经看懂了。你可以调整项目的访问权限,只需要稍微改变一点点代码。

miss201 翻译于 2个月前

在控制器中的用法

后台是应用程序中很重要的一部分。让我们看下怎么去限制用户访问控制器中的方法和逻辑。

file

admin 权限的用户访问控制器的权限控制

上面展示的就是 ?

miss201 翻译于 2个月前

总结 ??

我希望这篇文章对你有用。说真的,ACL 永远不会比这更简单。:)。想了解更多关于 Laravel 授权的内容,请查看 文档。如果你喜欢这篇文章,点个赞,它是免费的 ?

truesnow 翻译于 2个月前

原文地址:https://medium.com/@hujjatnazari/the-eas...

译文地址:https://laravel-china.org/topics/12902/t...


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

本帖已被设为精华帖!
回复数量: 4
  • 自己对着这个文档去写了下代码,只是用户我换成了自己定义的 admins 表,所以要改下app/config中的 auth.php 的配置,把默认的 auth 改成 admins
    file

    2个月前
  • 想问一下 Result API 应该怎么做限制,传给前端.

    2个月前
  • @张浩浩浩浩 你只需要在登录的时候把 role 告诉前端,剩下都是前端的事了。剩下的在后端对应的接口,就像上面说的,在接口里做好角色限制就 ok 了。

    1个月前 1
  • @erigo 谢谢解答 :grin:

    1个月前
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 250 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Composer 中文文档

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档