Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel中间件在路由中不工作_Php_Laravel_Middleware - Fatal编程技术网

Php Laravel中间件在路由中不工作

Php Laravel中间件在路由中不工作,php,laravel,middleware,Php,Laravel,Middleware,我对laravel(5.5)的中间产品有问题。首先,我创建了一个名为AdminPanelAuth的中间件 这就是我的中间件: <?php namespace App\Http\Middleware; use Closure; use Auth; class AdminPanelAuth { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Cl

我对laravel(5.5)的中间产品有问题。首先,我创建了一个名为AdminPanelAuth的中间件

这就是我的中间件:

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class AdminPanelAuth
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if(Auth::user() && Auth::user()->hasRole('admin'))
    {
        return $next($request);
    }
    else{
        return redirect()->route('home');
    }
}
}
管理中间件不适用于我的路由。我一直试图把这个放在web.php中,但一切都没有改变,仍然不适合我

ps.i allready使用composer转储自动加载、php artisan清除:编译和php artisan优化


谢谢你的帮助,祝你好运

尝试将
web
中间件与
admin
分离,如下所示:

Route::group(['middleware' => 'web', 'prefix' => config('backpack.base.route_prefix')], function () {
      ...
      Route::group(['middleware' => 'admin'], function() {
         ...
      });
      ...
};
编辑:

在中间件中添加
使用light\Support\Facades\Auth

内核
中,添加在
节流阀下创建的
管理
中间件

编辑2:

Kernel.php

protected $middlewareGroups = [
    'web' => [
        ...
        \App\Http\Middleware\AdminPanelAuth::class, //Make sure your middleware is last in array
    ],
    ...
]
Route::group(['middleware' => 'web', 'prefix' => config('backpack.base.route_prefix')], function () {
    ...
};
web.php

protected $middlewareGroups = [
    'web' => [
        ...
        \App\Http\Middleware\AdminPanelAuth::class, //Make sure your middleware is last in array
    ],
    ...
]
Route::group(['middleware' => 'web', 'prefix' => config('backpack.base.route_prefix')], function () {
    ...
};

您使用的是什么版本的Laravel?您是否修改了
web
中间件组,并且正在使用
StartSession::class
?@NikolaGavric Laravel 5。5@btl中间件工作正常,我的只是管理中间件不工作不工作,我想我的内核出了一些问题。你能至少在
管理中间件
中转储一些东西吗?这样你就可以确认请求是否命中了中间件?请求没有命中中间件可以在问题中包含
管理中间件
代码吗?检查更新后的答案,如果仍然没有工作时,发布更新的代码,并尝试通过
dd('HIT')检查请求是否命中中间件
中间件的
句柄
方法中