2017-06-15 8 views
0

私はLaravel 5.4、VueJS、AXIOS、VueRouterを使ってアプリケーションを開発しています。 VueRouterは、以下のルート設定のために保存し、アプリケーション内のナビゲーションのすべてに責任がある:URLが見つからない場合は次のルートに移動

<?php 

/* 
|-------------------------------------------------------------------------- 
| Web Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register web routes for your application. These 
| routes are loaded by the RouteServiceProvider within a group which 
| contains the "web" middleware group. Now create something great! 
| 
*/ 

Auth::routes(); 


Route::get('/{catchall?}', ['as' => 'start', 'middleware' => 'auth', function() { 
    return view('home')->with([...]); 
}])->where('catchall', '.*'); 

これは、本質的に<router-link></routerlink>が含まれている「ベース」ブレードファイルにユーザーをリダイレクトします。

しかし、私は誰でもアクセスできる(認証ミドルウェアを必要としない)ページをアプリケーションに実装しており、別のレイアウトを完全に利用しています(新しいブレードファイルが必要です)。

好ましくは、それは次のようにアクセスすることになります。

app.sample.com/{some-string}

よりもむしろこのような何か他のもの:

app.sample.com/survey/{some-string}

{some-string}、その後に投げ込まれ、ランダムに生成された文字列でありますDB。私のモデルの1つでアクセスできます。私はそれを理解したように、私はこのような何かを行うことができます:キャッチオールの上にこれを配置する

Route::get('/{some-string}', '[email protected]')

動作するはずです。しかし、/{some-string}はDBには何も一致していない、私はそれはhome.blade.php

にサービスを提供しますキャッチオール、によって処理されることを希望した場合にはこれを処理する任意のクリーンな方法はありますか?

答えて

0

あなたは本質的にRedirectIfAuthenticatedミドルウェアを記述していますが、これは少なくとも私がこれにどのようにアプローチするかということです。ミドルウェアを利用してユーザーの認証レベルを確認し、アプリケーションに提供する前にルートマッチングを行います。

+0

これは素晴らしい点です。そのような方法で問題に近づくとは考えていませんでした。私には理にかなっています! – mdobrenko

関連する問題