Laravel政策未被调用

时间:2019-11-05 19:39:39

标签: laravel laravel-6

文档是否隐藏了某些内容,还是有隐藏的内容?

我用过:

php artisan make:policy AdvertisementPolicy --model=Advertisement
class AdvertisementPolicy
{
    use HandlesAuthorization;

    /**
     * Determine whether the user can view any advertisements.
     *
     * @param  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中是否还有其他步骤可以完成此策略注册?

1 个答案:

答案 0 :(得分:2)

文档中没有任何隐藏内容。您只是没有仔细阅读文档。

请查看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');
    }
}