Laravel 8 授权资源控制器
如果你使用的是 资源控制器,那么你就可以在控制器构造方法里使用 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
。