【发布时间】:2017-07-07 04:04:38
【问题描述】:
我有一个带有 checkViewAccess() 方法的 Board.php 模型
即
@if($board->checkViewAccess())
render board
@endif
它会进行一些检查,在最后一次检查时,它需要调用策略方法来确定用户的授权。
- 在刀片中,
@can('view', $board)有效 - 在控制器中,
$this->authorize('view', $board)有效
但我终其一生都找不到任何方法来调用 Board 模型的策略授权
我尝试过的:
-
Gate::check('view', $this)// 非静态方法,挺好的,没想到居然能工作 -
auth()->user()->can('view', $this)// 无论我从策略中返回什么,这甚至都没有达到策略并返回 false。即使我只是在before()策略方法中返回 true,它也是 false。 Laravel 文档声称can()方法可用于用户对象 -
$user->can('view', $this);// 认为是 auth 门面的问题,我直接从数据库中获取了用户,它仍然没有达到策略
那么我该如何实现呢?如何从模型访问 laravel 授权?
【问题讨论】:
-
您需要问自己的一个问题是“为什么我在模型中需要这个?”然后“我可以把它放在更好的地方吗?”