如何根据用户角色在laravel中设置中间件?

如何根据用户角色在laravel中设置中间件?,laravel,authentication,middleware,Laravel,Authentication,Middleware,我在construct()中设置中间件时遇到问题 每次我都只选择后一个,这里auth作为中间件 因此,我的管理员被踢出用户的登录页面 如果没有中间件,我将面临lfm的问题,因为管理员被要求登录laravel filemanager窗口(允许用户浏览) 下面是我的代码: 公共函数构造() { 您无法访问构造函数中的http请求或会话信息 在以前版本的Laravel中,您可以访问控制器构造函数中的会话变量或经过身份验证的用户。这从来不是框架的明确功能。在Laravel 5.3中,您无法访问控制器构造

我在construct()中设置中间件时遇到问题

每次我都只选择后一个,这里auth作为中间件

因此,我的管理员被踢出用户的登录页面

如果没有中间件,我将面临lfm的问题,因为管理员被要求登录laravel filemanager窗口(允许用户浏览)

下面是我的代码: 公共函数构造() {


您无法访问构造函数中的http请求或会话信息

在以前版本的Laravel中,您可以访问控制器构造函数中的会话变量或经过身份验证的用户。这从来不是框架的明确功能。在Laravel 5.3中,您无法访问控制器构造函数中的会话或经过身份验证的用户,因为中间件尚未运行


来源:(从5.2>控制器升级到5.3.0)

有关于以下方面的解决建议吗?我目前是laravel 5.4。创建不同的路由并在路由中定义中间件。我尝试了您的建议,并执行了以下操作:Route::get('/web messages.html','DashboardController@getWebMessages')->中间件('auth:admin')->名称('admin.web messages');如果我注销并访问该页面,我仍然能够访问它!如果
web messages.html
公共目录中的真实文件,然后请求直接进入该文件,而不经过php/laravel。或者如果您缓存了copy。或其他十几个原因,则会发生这种情况;例如,一个实现糟糕的中间件。
    $middleware = '';
    if(Session::get('user_role') == 'admin'){
           $middleware = 'auth:admin';
        } else {
           $middleware =  'auth';
        }
    $this->middleware($middleware);
}