gpt4 book ai didi

laravel - 如何在 Laravel 5.2 中使用 OR 条件将多个参数传递给中间件

转载 作者:行者123 更新时间:2023-12-02 15:38:24 25 4
gpt4 key购买 nike

我正在尝试为两个不同的用户角色 Admin、Normal_User 设置访问操作的权限,如下所示。

Route::group(['middleware' => ['role_check:Normal_User','role_check:Admin']], function() {
Route::get('/user/{user_id}', array('uses' => 'UserController@showUserDashboard', 'as' => 'showUserDashboard'));
});

此路由可由管理员或普通用户访问。但在此中间件配置中,用户需要同时是 Admin 和 Normal_User。如何在中间件参数传递中添加 OR 条件?或者还有其他方法授予权限吗?

以下是我的中间件

public function handle($request, Closure $next, $role)
{
if ($role != Auth::user()->user_role->role ) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return response('Unauthorized.', 401);
}
}
return $next($request);
}

谁能回复一下吗?

最佳答案

您可以在 PHP 5.6+ 中使用 3 点 (...) 语法

你的中间件的句柄函数

public function handle($request, Closure $next, ...$roles)
{
foreach($roles as $role){
if ($request->user()->hasRole($role)){
return $next($request);
}
}
abort(404);
}

关于laravel - 如何在 Laravel 5.2 中使用 OR 条件将多个参数传递给中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38712282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com