php - Laravel5.2 对后台用户ACL权限管理没有效果
黄舟
黄舟 2017-04-10 17:06:10
0
2
339

Laravel5.1 ACL教程

按照上面的教程,用户表使用默认的user表的话,一切都是很顺利的,可是我最终的目的是后台的admin表进行权限管理,于是把教程里的user都换成了admin,这时候出了问题,在blade中@can('edit-post')@can('delete-post')全部没通过

于是我换到了控制器

$admin = Auth::guard('admin')->user(); if($admin->can('edit-post')){ echo 1; }

通过,成功输出1,yeah!

于是我就想到了会不会是模版中的can是取的user表?于是我又把auth.php中的默认guard改成admin

'defaults' => [ 'guard' => 'admin', 'passwords' => 'users', ],

成功!yeah!
好了,问题来了,我不改auth.phpguard的默认值,怎样可以在模版中让can判断的是admin表的用户?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous (2)
左手右手慢动作

看了下源码,似乎并不支持!!!

/** * Compile the can statements into valid PHP. * * @param string $expression * @return string */ protected function compileCan($expression) { return ""; }
/** * Determine if the given ability should be granted for the current user. * * @param string $ability * @param array|mixed $arguments * @return bool */ public function check($ability, $arguments = []) { try { $result = $this->raw($ability, $arguments); } catch (AuthorizationException $e) { return false; } return (bool) $result; }
    小葫芦

    模板里可以这样写,只不过很长,我把if里边的存到一个公用函数中了

    @if(Gate::forUser(Auth::guard('admin')->user())->allows('$priv')) @endif
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!