laravel 政策未调用

laravel policy not called

文档是隐藏了什么,还是隐藏了什么?

创建于

php artisan make:policy AdvertisementPolicy --model=Advertisement

class AdvertisementPolicy
{
    use HandlesAuthorization;

    /**
     * Determine whether the user can view any advertisements.
     *
     * @param  \App\User  $user
     * @return mixed
     */
    public function viewAny(User $user)
    {
        return false;

    }
public function view(User $user, Advertisement $advertisement)
{
    return false;

}

模型也是用 cli 创建的

namespace App;

class Advertisement extends Model
{

通过以下方式注册:

use App\Advertisement;
use App\Policies\AdvertisementPolicy;

class AuthServiceProvider extends ServiceProvider
{
    protected $policies = [
        Advertisement::class => AdvertisementPolicy::class,

这里是否有任何额外的步骤来完成此政策注册laravel 6?

文档中没有任何隐藏内容。你就是没仔细看文档

请查看 Authorizing Actions Using Policies 部分。

永远不会调用您的政策,因为您没有在代码中的任何地方使用它。至少,如果你需要 运行 你的控制器资源策略,你需要这样写:

<?php

namespace App\Http\Controllers;

use App\Advertisement;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AdvertisementController extends Controller
{
    public function __construct()
    {
        $this->authorizeResource(Advertisement::class, 'advertisement');
    }
}