0

許可されたユーザー (ミドルウェア認証) とゲスト (ミドルウェア ゲスト) に同じ URI で異なるコントローラーを使用しようとしていますが、laravel 5.3 で動作させることができません。

同じ URI で異なるミドルウェアで 2 つのルートを作成しようとしましたが、同じ URI で 2 つのルートを作成することはできません。

私は多くのことを試しましたが、laravel 5.3ではAuth::check()routesファイルで使用できず、常にfalseを返します:

Route::get('/', [
    'as' => 'home', 
    'uses' => (Auth::check() ? 'User\DashboardController' : 'Guest\HomeController'),
]);

また、ルートで関数を使用しようとしました:

Route::get('/', [
    'as' => 'home', 
    'uses' => function (){
        $app = app();
        if(Auth::check()){
            $controller = $app->make('App\Http\Controllers\User\DashboardController'); 
            return $controller->callAction('getIndex', $parameters = []);
        }else{
            $controller = $app->make('App\Http\Controllers\Guest\HomeController');
            return $controller->callAction('getIndex', $parameters = []);
        }
    }
]);

現在Auth::check()はほとんど動作しますが、コントローラー__construct関数のミドルウェアは無視されます。そして、これはあまり見栄えがよくありません。

ログインからこのルートにリダイレクトすると、Auth::check()false が返されるという問題もあります。しかし、ページを更新すると、true が返されます。

1 つのコントローラーを使用して、そのコントローラーでユーザーとゲストの両方を処理したくありません。これは、ユーザー コントローラーがゲスト コントローラーとは別のクラスを拡張するためです。

ゲスト用のコントローラーと許可されたユーザー用の異なるコントローラーを使用して1つのルートを作成する方法を誰かが知っていますか?

4

1 に答える 1