使用Multi Auth Laravel 5.2中的策略实施ACL

时间:2016-08-06 14:31:31

标签: laravel authentication acl

AuthService Provider:

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

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

Admin是一名Auth Guard

控制器:

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

Gate始终返回' Deny'

我有一个执行相同工作的存储库功能。

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

1 个答案:

答案 0 :(得分:1)

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

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

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