Zizaco/entrust 权限控制支持 auth guard 指定分组权限控制么?

项目里面用户Auth验证是分开的,后台用的 Auth::guard('admin')->user() 来获取用户信息,权限控制用的https://github.com/Zizaco/entrust

判断某个用户是否有某个权限,用如下方法写是可以的

//写法1
Auth::guard('admin')->user()->can('admin.post.create'); //true

换成这种写法就不行

//写法2
Entrust::can('admin.post.create'); //false

在blade里面这样写也是不行的

//写法3
@permission('admin.post.create')
    I can create
@endpermission

调试发现,vendor/zizaco/entrust/src/Entrust/EntrustFacade.php这个函数的can里面的$this->user打印出来是null

/**
 * Check if the current user has a permission by its name
 *
 * @param string $permission Permission string.
 *
 * @return bool
 */
public function can($permission, $requireAll = false)
{
    if ($user = $this->user()) {
        return $user->can($permission, $requireAll);
    }
    return false;
}

怎样才能在auth是多个分组的情况下也支持第二、三种写法呢?目前暂时用下面这个写法实现了,还有别的比较好的方法么?

//php 文件
$adminUserinfo = Auth::guard('admin')->user();

//blade 模板
@if($adminUserInfo->can('admin.post.create'))
     <a>create</a>
@endif
Aber
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

不支持的,首先配置文件里就没有支持.

6年前 评论

https://github.com/ScoLib/admin/blob/maste...

你可以参考一下我的这个 auth的中间件,认证时需要指定guard的

6年前 评论
Aber

@klgd 谢谢 我看下

6年前 评论

楼主解决了吗? 我也遇到了这个问题,求指教

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!