Laravel - 参数化路由仅适用于管理员的完全访问,但对已记录的用户的特定访问

问题描述 投票:0回答:1
我正在构建一个用户管理系统。 web.php 上的当前路由在这里:

Route::middleware(['admin']) ->prefix('users') ->name('users.') ->group(function() { Route::get('management/list', '\App\Http\Controllers\UserController@list'); Route::resource('management', '\App\Http\Controllers\UserController'); });
我有两个级别的用户:

Administrator

(中间件是
admin
)和
Collaborator
(中间件是
auth
)。

我的问题是来自用户资源的

edit

update
的路线:
users/management/{management}/edit

如何从身份验证中间件对用户执行类似的操作,以便仅在参数是协作者用户自己的用户 ID 时才允许路由?

Route::middleware(['auth']) ->prefix('users') ->name('users.') ->group(function() { Route::get('management/{auth()->id}/edit', '\App\Http\Controllers\UserController@edit'); });
    
php laravel routes laravel-middleware
1个回答
0
投票
我不确定您可以执行此操作,但是您可以在控制器中再次查找用户

Route::middleware(['auth']) ->prefix('users') ->name('users.') ->group(function() { Route::get('management/currentuser/edit', '\App\Http\Controllers\UserController@edit'); });
这也是更好的做法,因为您查找的是登录用户而不是任何用户。

© www.soinside.com 2019 - 2024. All rights reserved.