您好,欢迎访问一九零五行业门户网

Laravel5.2 对后台用户ACL权限管理没有效果

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.php中guard的默认值,怎样可以在模版中让can判断的是admin表的用户?
回复内容: 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.php中guard的默认值,怎样可以在模版中让can判断的是admin表的用户?
看了下源码,似乎并不支持!!!
/** * 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
其它类似信息

推荐信息