Laravel 尝试将一条路由分配给多个中间件
为多个中间件分配一个路由时出现问题 这是我在web.php中看到的Laravel 尝试将一条路由分配给多个中间件,laravel,Laravel,为多个中间件分配一个路由时出现问题 这是我在web.php中看到的 Route::group(['middleware' => ['hodAndProvost']], function () { Route::match(['post','get'],'applied', 'LeavesController@applied'); Route::match(['post','get'],'approval/{id}', 'LeavesController@approv
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' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'hodAndProvost' => [
\App\Http\Middleware\hodMiddleware::class,
\App\Http\Middleware\provostMiddleware::class,
],
'application' => [
\App\Http\Middleware\hodMiddleware::class,
\App\Http\Middleware\provostMiddleware::class,
\App\Http\Middleware\lecturerMiddleware::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
这就是我的Hodmidware里的东西
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);
}
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);
}
这就是我的教务长办公室
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);
}
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\FatalThroTableError
找不到类“App\Http\Middleware\Response”您没有导入
Response
类,因此它在同一命名空间中查找它。您甚至不需要创建新的响应
,view()
也是一个响应
请尝试以下代码:
<?php
namespace App\Http\Middleware;
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);
}
}
添加使用light\Support\Facades\Response代码>在中间件的顶部,或者您可以使用response()
helper.@porloscerosψ仍然不工作,还是相同的错误?尝试returnresponse()->view('unauthorized',['role'=>'PROVOST',401)
@porloscerrosψsir问题在于不应该读取该行返回,因为该值是正确的,读取该行意味着登录用户不是教务长,或者HODI意味着您将返回新响应(视图('unauthorized')->替换为('role','provost')代码>通过返回响应()->查看('unauthorized',['role'=>'PROVOST',401)代码>