我有一个名为'AdminMiddleware'的中间件,它正在类的构造函数中使用。由于某些原因,虽然正在运行构造函数,但是没有从构造函数中调用中间件。我尝试在adminMiddleware文件上进行模具转储,但似乎只是忽略了这个文件。
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。
答案 0 :(得分:6)
您需要做两件事来在控制器中启用中间件:
在App \ Http \ Kernel.php中的$ routeMiddleware中注册中间件
protected $ routeMiddleware = [ 'admin'=> '应用程序\ HTTP \中间件\ AdminMiddleware', ];
使用中间件的密钥启用控制器中的中间件,而不是类名:
$这 - >中间件( '管理员');
答案 1 :(得分:1)
我有同样的问题,并通过composer dump-autoload解决它。 我的问题是更改文件名,而不是重新生成自动加载。 我希望它适合你。
答案 2 :(得分:0)
我遇到了同样的问题,路由缓存显然也缓存了中间件。
因此php artisan route:clear
解决了我的情况。