试图将一条路由分配给多个中间件



请将一条路由分配给多个中间件时遇到问题这就是我在web.php 中看到的

Route::group(['middleware' => ['hodAndProvost']], function () {
Route::match(['post','get'],'applied', 'LeavesController@applied');
Route::match(['post','get'],'approval/{id}', 'LeavesController@approval');
});

这是我的App\htpp\kanel.php 中的内容

protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
// IlluminateSessionMiddlewareAuthenticateSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
],
'hodAndProvost' => [
AppHttpMiddlewarehodMiddleware::class,
AppHttpMiddlewareprovostMiddleware::class,
],
'application' => [
AppHttpMiddlewarehodMiddleware::class,
AppHttpMiddlewareprovostMiddleware::class,
AppHttpMiddlewarelecturerMiddleware::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];

这是我的常用中间件中的内容

public function handle($request, Closure $next)
{
if ($request->user() && $request->user()->user_access_id != '2')
{
return new Response(view('unauthorized')->with('role', 'HOD'));
}
return $next($request);
}

这是我的provostMiddleware 中的内容

public function handle($request, Closure $next)
{
if ($request->user() && $request->user()->user_access_id != '3')
{
return new Response(view('unauthorized')->with('role', 'PROVOST'));
}
return $next($request);
}

这就是我得到的错误

Symfony\Component\Debug\Exception\FatalThrowableError

找不到类"App\Http\Middleware\Response">

您没有导入Response类,因此它在同一名称空间中查找它。您甚至不需要创建新的Responseview()也是一个响应。

尝试以下代码:

<?php
namespace AppHttpMiddleware;
use Closure;
class hodMiddleware
{
public function handle($request, Closure $next)
{
if ($request->user() && $request->user()->user_access_id != 2) {
return view('unauthorized')->with('role', 'HOD'); // like your example
// OR: //
return redirect()->back();
}
return $next($request);
}
}

离题了,但是,你的类名总是以大写字母开头。:(

最新更新