Laravel 8 通过中间件
Laravel 包含一个中间件,可以在传入的请求到达路由或控制器之前对操作进行授权。默认情况下,Illuminate\Auth\Middleware\Authorize
中间件被分配给 App\Http\Kernel
类中的 can
键。让我们来探索一个使用 can
中间件授权用户更新博客文章的例子:
use App\Models\Post;
Route::put('/post/{post}', function (Post $post) {
// 当前用户可以更新帖子...
})->middleware('can:update,post');
在本例中,我们传递了 can
中间件两个参数。第一个是希望授权的操作的名称,第二个是希望传递给策略方法的路由参数。在本例中,由于我们使用 隐式模型绑定,一个 Post
模型将被传递给策略方法。如果用户没有被授权执行给定的操作,则中间件将生成一个带有 403
状态代码的 HTTP 响应。