Laravel 的中间件无法在 Controller 上运行
Laravel's Middleware not working on Controller
我有一个名为 'AdminMiddleware' 的中间件,它正在 class 的构造函数中使用。由于某种原因,虽然构造函数正在 运行,但未从构造函数调用中间件。我尝试在 adminMiddleware 文件上进行 die dump,但它似乎只是忽略了这个文件。
namespace App\Http\Controllers\SuperAdmin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class dashboard extends Controller
{
protected $user;
public function __construct()
{
$this->middleware('admin');
$this->user = Auth::User();
}
//Kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'superadmin' => \App\Http\Middleware\SuperAdminMiddleware::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
对于某些项目需求,我不能直接在路由上使用中间件。感谢任何帮助,我正在使用 laravel 5.1.
你需要做两件事来启用控制器中的中间件:
在你的App\Http\Kernel.php
的$routeMiddleware中注册中间件
受保护的 $routeMiddleware = [
'admin' => 'App\Http\Middleware\AdminMiddleware',
];
在控制器中启用中间件,使用中间件的密钥,而不是class名称:
$this->middleware('admin');
我也遇到了同样的问题,用composer dump-autoload解决了。
我的问题是更改文件名而不是重新生成自动加载。
希望对你有用。
我运行遇到了同样的问题,显然路由缓存也缓存了中间件。
所以php artisan route:clear
解决了我的问题。
我有一个名为 'AdminMiddleware' 的中间件,它正在 class 的构造函数中使用。由于某种原因,虽然构造函数正在 运行,但未从构造函数调用中间件。我尝试在 adminMiddleware 文件上进行 die dump,但它似乎只是忽略了这个文件。
namespace App\Http\Controllers\SuperAdmin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class dashboard extends Controller
{
protected $user;
public function __construct()
{
$this->middleware('admin');
$this->user = Auth::User();
}
//Kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'superadmin' => \App\Http\Middleware\SuperAdminMiddleware::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
对于某些项目需求,我不能直接在路由上使用中间件。感谢任何帮助,我正在使用 laravel 5.1.
你需要做两件事来启用控制器中的中间件:
在你的App\Http\Kernel.php
的$routeMiddleware中注册中间件受保护的 $routeMiddleware = [ 'admin' => 'App\Http\Middleware\AdminMiddleware', ];
在控制器中启用中间件,使用中间件的密钥,而不是class名称:
$this->middleware('admin');
我也遇到了同样的问题,用composer dump-autoload解决了。 我的问题是更改文件名而不是重新生成自动加载。 希望对你有用。
我运行遇到了同样的问题,显然路由缓存也缓存了中间件。
所以php artisan route:clear
解决了我的问题。