Laravel 来自模型的授权

Laravel 来自模型的授权,laravel,laravel-5,Laravel,Laravel 5,我有一个带有方法的Board.php模型checkViewAccess() i、 e 它执行一些检查,在最后一次检查时,它需要调用一个策略方法来确定用户的授权 在刀片中,@can('view',$board)起作用 在控制器中,$this->authorize('view',$board)起作用 但在我的一生中,我无法找到任何方法从板模型调用策略授权 我所尝试的: Gate::check('view',$this)//非静态方法,很好,没想到它会工作 auth()->user()->can

我有一个带有方法的
Board.php
模型
checkViewAccess()

i、 e

它执行一些检查,在最后一次检查时,它需要调用一个策略方法来确定用户的授权

  • 在刀片中,
    @can('view',$board)
    起作用
  • 在控制器中,
    $this->authorize('view',$board)
    起作用
但在我的一生中,我无法找到任何方法从
模型调用策略授权

我所尝试的:

  • Gate::check('view',$this)
    //非静态方法,很好,没想到它会工作
  • auth()->user()->can('view',$this)
    //这甚至不会影响策略并返回false,无论我从策略返回什么。即使我只是在
    before()
    policy方法中返回true,它也是false。Laravel文档声称用户对象上可以使用
    can()
    方法
  • $user->can('view',$this)//认为这是auth facade的问题,我直接从数据库中获取了用户,但仍然没有达到策略要求

那么我如何才能做到这一点呢?如何从模型访问laravels授权?

原来是
Laratrust
包在trait中使用了
can()
方法,因此我无法将自己的可授权trait添加到我的用户模型中

修正:


原来是
Laratrust
包在trait中使用了
can()
方法,因此我无法将自己的可授权trait添加到我的用户模型中

修正:


你需要问自己的一个问题是“为什么我需要这个在模型中?”然后是“我可以把它放在更好的地方吗?”你需要问自己的一个问题是“为什么我需要这个在模型中?”然后是“我可以把它放在更好的地方吗?”如果你已经解决了你的问题,你可能想要接受你自己的答案;)如果你已经解决了你的问题,你可能想接受你自己的答案;)我得等几天才能让我
@if($board->checkViewAccess())
    render board
@endif
use LaratrustUserTrait;
use Authorizable {
    LaratrustUserTrait::can insteadof Authorizable;
    Authorizable::can as authorize;
}