authentication - 如何在 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')
我怎样才能做到这一点?
解决方案
推荐阅读
- python - 将数据框列值传递给函数
- gitlab - gitlab:我如何以编程方式将工件上传到 gitlab 注册表
- android - 您如何在 Android 中请求 MANAGE_EXTERNAL_STORAGE 权限?
- python - Tkinter 窗口稍微偏离中心
- asp.net-core - 在 ASP.net core 3.1 Razor Pages 中打印 PDF
- reactjs - 在 React-Router 中设置复杂的站点地图(不使用 react-router-sitemap)
- d3.js - 为什么我的 D3js 折线图无法呈现值和 x 轴?
- python - 如何使 Python 的 print() 非阻塞?
- python - 带有 3.9.0 的 macs10.15.7 上的 gensim 安装错误
- java - 无法调用“java.sql.Connection.getMetaData()”,因为“
“ 一片空白