我试图为用户绑定一个策略,检查他是否在另一个表中有一条记录,并且标志设置为true。但是,我使用的政策并没有注入当前用户。
AuthServiceProvider.php
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
\App\Http\Models\User::class => \App\Policies\UserPolicy::class,
];
应用\策略\ UserPolicy
<?php
namespace App\Policies;
use App\Http\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class UserPolicy
{
use HandlesAuthorization;
public function view(User $user)
{
return true;
// currently just debug value
}
}
在laravel文档中,它表示为:
所有策略都通过Laravel服务容器解析,这意味着您可以在策略的构造函数中键入提示任何所需的依赖项,它们将自动注入。
使用auth()->user()->can('view')
- 在依赖的控制器中对表的记录进行检查 - 无论如何都要返回false。让它运作的唯一方法是打电话给
auth()->user()->can('view', auth()->user())
或$this->authorize('view', auth()->user())
为了让第一种方法起作用,我缺少什么?
编辑:如果我在方法本身或构造函数中键入用户,因为它似乎被忽略,这无关紧要。