【问题标题】:Implement ACL using Policies in Multi Auth Laravel 5.2在 Multi Auth Laravel 5.2 中使用策略实现 ACL
【发布时间】:2016-08-06 14:31:30
【问题描述】:

AuthService 提供者:

public function boot(GateContract $gate)
    {
        $this->registerPolicies($gate);

        $gate->define('show-user', function ($admin) {
            return $admin->hasRole('Admin');
        });
    }

管理员是 Auth Guard

控制器:

public function edit($admin) {
  if (Gate::allows('show-user'))
            return 'allow';
        else {
            return 'deny';
        }
   }

Gate 总是返回“拒绝”

我有一个存储库功能做同样的工作。

public function checkPermission($admin) {
   return $this->auth->hasRole('Admin') || $this->auth->id ===    $admin->id;
  }

【问题讨论】:

    标签: laravel authentication acl


    【解决方案1】:

    为什么要将$admin->roles 与字符串进行比较?从属性名称看,它可能返回多个角色,可能是逗号分隔的字符串或数组?您必须确保检查“管理员”是角色之一。

    例如,如果它返回一个数组,你可以这样做:

    return in_array('Admin', $admin->roles);

    【讨论】:

    • 管理员是一个角色。我正在测试ACL。所以没有去追求复杂的逻辑。
    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 2016-04-20
    • 2016-07-19
    • 2016-09-22
    • 1970-01-01
    • 2020-10-26
    • 2016-04-09
    • 2021-01-13
    相关资源
    最近更新 更多