阅读(614) (7)

Laravel 8 授权资源控制器

2021-06-29 16:33:54 更新

如果你使用的是 资源控制器,那么你就可以在控制器构造方法里使用 authorizeResource 方法。此方法将适当的 can 中间件定义附加到资源控制器相应的方法中。

authorizeResource 方法接受模型的类名作为其第一个参数,而将包含模型 ID 的 route /request 参数的名称作为其第二个参数。 您应该确保您的 这样控制器 是使用 --model 标志创建的,以具有所需的方法签名和类型提示:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function __construct()
    {
        $this->authorizeResource(Post::class, 'post');
    }
}

以下控制器方法将映射到其对应的策略方法:

控制器方法 策略方法
index viewAny
show view
create create
store create
edit update
update update
destroy delete

技巧:你可以使用带有 --model 选项的 make:policy 命令去快速生成基于给定模型的策略类:php artisan make:policy PostPolicy --model=Post