首页 > 解决方案 > 如何在 Laravel 中为类似请求制作全局策略/中间件/门

问题描述

我使用 Laravel 7,这些是我的路线:

api.php

Route::group(['middleware' => ['auth:api']], function () {
  Route::get('posts/{id}', 'PostController@view');
  Route::delete('posts/{id}', 'PostController@destroy');
  Route::put('posts/{id}', 'PostController@update');
  /**
  *
  * Continues similar CRUD requests ...
  * 
  */
  Route::get('comments/{id}', 'CommentController@view');
  Route::delete('comments/{id}', 'CommentController@destroy');
  Route::put('comments/{id}', 'CommentController@update');
  /**
  *
  * Continues similar CRUD requests ...
  * 
  */
});

我只希望帖子/评论/... id 的所有者能够对这些内容进行更改。

例如:$post->user_id === $user->id

或者除非用户是管理员 ( $user->role == 'admin')。

创建多个策略 ( PostPolicy, CommentPolicy, TagPolicy...) 以执行相同的类似操作是没有意义的。

我正在寻找一种全局策略/中间件开发来验证这些类似的请求。

例如:->middleware('isAdminOrself')

我怎样才能做到这一点?

标签: authenticationauthorizationlaravel-7

解决方案


推荐阅读