2016-12-09 6 views
1

Ich erstelle ein Backend-System, das ich VueJS2 für mit einem Laravel-Backend verwenden möchte. Das Problem, das ich im Moment konfrontiert bin integriert diese alle zusammen, während die ‚ordentlich‘ URLS zu halten (keine hashbangs) unter Verwendung von Vue Geschichte-Modus:VueJS2 und Laravel Auth (und History-Modus)

const router = new VueRouter({ 
    routes, 

    mode: 'history' 
}) 

Ich bin ein Fan von der Art und Weise Laravel Authentifizierung behandelt und als solche Ich habe versucht, das in diesem System als Einstiegspunkt in den SPA zu verwenden, aber das bricht den Historienmodus.

In meiner Routen-Datei Ich habe eine Vue-Capture-Route hinzugefügt, die schwer Auffrischen des Browsers und Zurück-Taste etc erlauben arbeitet an und das funktioniert gut:

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

Um jedoch Laravel Auth zu verwenden i‘ hinzugefügt haben Sie die folgende Überprüfung, die funktioniert zu zwingen, bevor einzuloggen etwas anderen Zugriff aber bricht den Geschichte-Modus:

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]'); 
} 

ich habe versucht, Middleware auf das Ende der vue Capture Route hinzugefügt, aber es schien nicht, etwas tun.

Vielen Dank!

Antwort

0

Um SPA mit einem beliebigen Backend arbeiten zu können, sollten Sie die Api-Authentifizierung basierend auf JWT verwenden.

Dies ist Laravel docs darüber: https://laravel.com/docs/5.3/passport

Das ist gutes Paket für diesen Zweck: https://github.com/tymondesigns/jwt-auth

+0

Ich bin nicht sicher, ob das nur für die API-Arbeit ist eher als Kunde gegenüber? Wenn ich Backend sage, meine ich eher ein Intranet-System, auf das der Client direkt über den Browser zugreifen kann. Ich möchte, dass sie auf die Anmeldeseite gelangen, sich mit ihren Zugangsdaten einloggen und erst danach das SPA eingeben. Oder ist das immer noch die Lösung? – Reactive

+0

Dies ist immer noch die Lösung. Sie müssen verstehen, dass auth von SPA behandelt werden muss. Ich meine, dass Login-Seite in SPA sein muss, dann müssen Sie Anmeldeinformationen an Back-End senden, dann zurück JWT aus Back-End und speichern Sie es in SPA und dann JWT in die Header jeder HTTP-Anfrage anhängen, um Ihre Anfrage zu autorisieren. –