我有一个名为“AdminMiddleware”的中间件,它在类的构造函数中使用。由于某种原因,虽然构造函数正在运行,但没有从构造函数调用中间件。我尝试在adminMiddleware文件上执行一个die转储,但它似乎忽略了此文件。
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。
4条答案
按热度按时间llycmphe1#
我遇到了同样的问题,显然路由缓存也缓存中间件。
所以
php artisan route:clear
在我的情况下解决了它。ru9i0ody2#
要在控制器中启用中间件,您需要做两件事:
1.在$routeMiddleware中注册中间件在您的应用程序\Http\Kernel.php中
protected $routeMiddleware = [ '管理员' =〉'应用程序\HTTP\中间件\管理员中间件',];
1.在控制器中启用中间件,使用中间件的密钥,而不是类名:
$this-〉中间件('admin');
yzxexxkh3#
我有同样的问题,并解决它的 composer 转储-自动加载。我的问题是改变文件名,而不是重新生成自动加载。我希望它为您工作。
w3nuxt5m4#
使用Laravel框架9.46.0对我来说也不起作用,关键字'admin',将其更改为'administrator'或'admin.only'工作。就像'admin'是一个保留字。