2016-12-09 19 views
1

私はLaravelバックエンドでVueJS2を使用したいバックエンドシステムを作成しています。VueJS2とLaravel Auth(および履歴モード)

const router = new VueRouter({ 
    routes, 

    mode: 'history' 
}) 

Laravelは認証を処理し、そのように私は道のファンです:ヴューの履歴モード利用「整頓」のURL(なしhashbangs)を維持しながら、私は現時点で直面してる問題は、すべて一緒に、これを統合しています私はSPAへのエントリーポイントとしてこのシステムでそれを使用しようとしましたが、そうすることで履歴モードが破られます。私のルートで

iはVueのは、ブラウザのバックボタンなどのハードリフレッシュを許可するように動作し、これが正常に動作しますルートを取り込む追加したファイル:

Route::get('/{vue_capture?}', function() { 
    return view('home'); 
})->where('vue_capture', '[\/\w\.-]*'); 

しかしLaravel認証を使用するために、私は」私はVUEキャプチャルートの最後にミドルウェアを追加しようとしましたが、それはいないようでした

if (Auth::check()) { 
    Route::get('/{vue_capture?}', function() { 
     return view('home'); 
    })->where('vue_capture', '[\/\w\.-]*'); 
} 
else { 
    // the home controller has the auth middleware in the __construct 
    Route::get('/', '[email protected]'); 
} 

:何かをアクセスする前にログインするあなたを強制的に動作しますが、履歴モードを破り、以下のチェックを追加したVEの何をするにも。

多くの感謝!

答えて

0

SPAをバックエンドで使用するには、JWTに基づくApi認証を使用する必要があります。

これはそれについてLaravelのドキュメントです:https://laravel.com/docs/5.3/passport

これは、この目的のために良いパッケージです:https://github.com/tymondesigns/jwt-auth

+0

それが唯一のAPIの仕事ではなく、顧客の対面のためであれば、私はわからないんだけど?私がバックエンドと言うとき、私はイントラネット型のシステムを意味します。そこでは、ブラウザからクライアントに直接アクセスできるようになっています。ですから、私は彼らにログインページにアクセスし、資格情報でログインし、その後にSPAを入力するようにします。それとも解決策ですか? – Reactive

+0

これはまだ解決策です。 authはSPAで処理する必要があることを理解する必要があります。ログインページがSPAになければならないということです。バックエンドに資格情報を送信し、バックエンドからJWTを取得してSPAに保存し、JWTをすべてのhttpリクエストのヘッダーに添付してリクエストを承認します。 –

関連する問題