通过控制器助手授权:方法authorize()不存在 - Laravel 5.5

Tha*_*Dao 1 php laravel laravel-5

我定义了PostPolicy.php处理谁可以访问操作。
我正在尝试处理更新帖子的 PUT 请求,但它似乎无法正常工作。

namespace App\Policies;

use App\Models\Users;
use App\Models\Posts;
use Illuminate\Auth\Access\HandlesAuthorization;

class PostPolicy
{
    use HandlesAuthorization;

    public function view(Users $user, Posts $posts)
    {
        return true;
    }

    public function create(Users $user)
    {
        return true;
    }

    public function update(Users $user, Posts $posts)
    {
        return true; //$user->id === $posts->user_id;
    }

    public function delete(Users $user, Posts $posts)
    {
        return $user->id === $posts->user_id;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在以下位置注册了此政策AuthServiceProvider.php

protected $policies = [
    'App\Model' => 'App\Policies\ModelPolicy',
    App\Models\Posts::class => App\Policies\PostPolicy::class,
];
Run Code Online (Sandbox Code Playgroud)

我的路线:

Route::put('post/update/{id}', 'CMS\PostController@update');
Run Code Online (Sandbox Code Playgroud)

最后,这是我的控制器

namespace App\Http\Controllers\CMS;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use App\Models\Posts as PostModel;
use LRedis;
use Illuminate\Http\Request;

class PostController extends BaseController
{
    public function __construct()
    {

    }

    public function update (Request $request, PostModel $postModel) {
        $this->authorize('update', $postModel);

    }

    public function subcribe () {
    }
}
Run Code Online (Sandbox Code Playgroud)

当我提交表单时,我收到错误Method [authorize] does not exist on [App\Http\Controllers\CMS\PostController].

我正在制作我的演示我正在按照文档

我有什么错?我错过了任何正在进行的事情吗?

pat*_*cus 6

authorize方法由特征提供Illuminate\Foundation\Auth\Access\AuthorizesRequests

您可以直接将此特征添加到您的控制器中,也可以让您的控制器扩展 Laravel ( App\Http\Controllers\Controller) 附带的默认控制器,因为它已经具有此特征(以及DispatchesJobsValidatesRequests)。