我创建了routeMiddleware,它将为我的主导航获取并准备配置。正常的页面调用将由名为“ PageController”的控制器处理。在这里,我在构造函数中定义了中间件。
namespace App\Http\Controllers;
//use Illuminate\Http\Request;
use Illuminate\Support\Facades\Request;
class PageController extends Controller
{
public function __construct()
{
$this->middleware('mainnavconfig');
}
public function home(Request $request){
return view('home');
}
public function page1(Request $request){
return view('intern');
}
}
当我获得/ page1(具有登录用户)时,一切都会按预期进行。
在routes.php中定义此页面的方式
Route::group(['as'=>'Intern.','middleware'=>['auth','mainnavconfig']], function () {
Route::get('/page1', '\App\Http\Controllers\PageController@page1')->name('page1');
});
对于我的根URL“ /”,我想显示未授权用户的登录名,并显示已登录用户的“主页”页。我在routes.php中执行此操作的方式
Route::get('/', function (Request $request) {
// logged in -> home
if (Auth::check()) {
return \App::make('\App\Http\Controllers\PageController')->home($request);
//return \App::call('\App\Http\Controllers\PageController@home');
// not logged in
}else{
return view('login');
}
})->name('root');
问题在于,似乎“ mainnavconfig”-中间件在我登录后将不会执行。我认为此时修改中间件数组可能为时已晚?
不会通过直接调用controller-method-direct来调用middlware
return \App::call('\App\Http\Controllers\PageController@home');
并且不会通过实例化PageController本身来执行。
return \App::make('\App\Http\Controllers\PageController')->home($request);
那么解决此问题的正确方法是什么?我知道我可以简单地将登录用户的重定向更改为……。像“ / home”一样,一切都很好,但我想保留起始页面的“ /”根URL。
我希望我把一切都弄清楚了。我在php 7.1.19中使用laravel 5.6.29
route:list的输出
+--------+----------+------------+---------------+----------------------------------------------------+------------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------+---------------+----------------------------------------------------+------------------------+
| | GET|HEAD | / | root | Closure | web |
| | POST | / | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | GET|HEAD | Logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | GET|HEAD | PW | pwresetform | Closure | web |
| | GET|HEAD | PW/Neu | pwrenewform | Closure | web |
| | GET|HEAD | Page1 | Intern.Seite1 | App\Http\Controllers\PageController@page1 | web,auth,mainnavconfig |
| | POST | api/PW/Get | getnewPW | App\Http\Controllers\Auth\LoginController@getNewPW | api,guest |
| | POST | api/PW/Set | pwreset | App\Http\Controllers\Auth\LoginController@setPW | api,guest |
| | GET|HEAD | api/user | | Closure | api,auth:api |
+--------+----------+------------+---------------+----------------------------------------------------+------------------------+