【问题标题】:Laravel profile access and permissionsLaravel 个人资料访问和权限
【发布时间】:2014-07-22 06:08:07
【问题描述】:

如何在 laravel 中为不同的用户进行不同的页面(&动作)访问?

例如我们有 3 名员工:

  1. 管理员 - 管理 eshop
  2. 经理 - 处理订单、运输等
  3. 文案 - 将新商品添加到目录,撰写帖子

A) 页面访问。登录 eshop-admin 区域时,用户会看到菜单:

  1. 管理员 - 用户设置发布目录运输订单
  2. 经理 - 发布目录运输订单
  3. 文案 - 帖子目录

B) 操作访问。经理和文案的帖子页面:

  1. 经理操作:
    • add_post
    • add_post_category
    • delete_post
    • edit_post
  2. 文案:
    • add_post
    • edit_post

C) 将删除帖子的权限授予文案 A,但不授予其他文案。

【问题讨论】:

  • 这是相当大的,需要几个表和Models 以及其他相关的东西(路由、控制器等),你能最小化这个问题还是先尝试一些东西并提出代码。或者,您可以使用ACL Packages
  • 在更高级别上,您正在寻找的是基于属性的访问控制 (ABAC) 和实现 ABAC 的 XACML。对于您的用例,这可能有点矫枉过正,但这是正确的做法。查看 csrc.nist.gov/projects/abac/。它不是特定于 PHP 或 Laravel 的。

标签: php laravel permissions authorization access-control


【解决方案1】:

您可以使用Verify 设置的授权和权限部分。使用该软件包,您可以为管理员、经理和文案创建角色。

要显示正确的菜单,在控制器或视图中,您可以检查用户的角色并显示/加载正确的菜单项。

在验证中,您可以为每个角色设置不同的权限(例如 add_post、edit_post 等)。这将涵盖 B 部分。您可以创建过滤器来检查用户是否具有正确的权限,例如。创建一个帖子。

C部分,您必须创建一个单独的表/模型,您将在其中记录特定于帖子的授权(post_id,user_id),并在控制器操作中或再次使用过滤器检查用户和帖子是否出现在表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多