2017-02-12 2 views
0

Ich bin ein Anfänger in Laravel, ich versuche, auf eine andere Route umleiten, wenn der Benutzer angemeldet ist, funktionieren die Anmeldung und Anmeldung perfekt und sind kein Problem, aber wenn ich versuchenLaravel Umleitung zu Route, wenn Benutzer angemeldet ist

@if(Auth::check()) 
    {{ 
     redirect()->route('news') 
    }} 
@endif 

die Umleitung Skript wird auf dem Bildschirm ausgegeben, wie dies zu tun:

HTTP/1.0 302 Found Cache-Control: no-cache, private Location: http://localhost/red-sec/public/news <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta http-equiv="refresh" content="1;url=http://localhost/red-sec/public/news" /> <title>Redirecting to http://localhost/red-sec/public/news</title> </head> <body> Redirecting to <a href="http://localhost/red-sec/public/news">http://localhost/red-sec/public/news</a>. </body> </html> 

mich bitte entschuldigen, wenn ich einen Anfängerfehler i Laravel extrem bin hier getan hat, und die Nachricht Route gesetzt richtig auf und funktioniert
EDIT: für den ersten Kommentar, ja, hier ist meine web.php Datei:

<?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! 
| 
*/ 

Route::get('/', function() { 
    return view('welcome'); 
})->name('home'); 

Route::post('/signup', [ 
    'uses' => '[email protected]', 
    'as' => 'signup' 
]); 

Route::post('/signin', [ 
    'uses' => '[email protected]', 
    'as' => 'signin' 
]); 

Route::get('/news', [ 
    'uses' => '[email protected]', 
    'as' => 'news', 
    'middleware' => 'auth' 
]); 
+0

ist die Route Nachrichten tatsächlich benannt? Haben Sie in Ihrer routes-Datei so etwas wie 'Route :: get ('/ news') -> name ('news')'? – dargue3

+0

Ich bearbeitete die Frage bitte überprüfen Sie die web.php Datei ja es ist –

+0

es scheint zu generieren das Umleiten Skript korrekt, aber es ist es auf dem Bildschirm drucken –

Antwort

3

Sie sollten nicht versuchen (und kann) in Aussicht umleiten. Ansichten sollten NUR für die Anzeige von Daten verwendet werden, nicht für die Geschäftslogik.

Da Sie keine Controller verwenden jede Logik zu tun (Sie Ansicht zurückkehren direkt vom Router), können Sie etwas tun:

Route::get('/', function() { 
    if(Auth::check()) { 
     return redirect()->route('news'); 
    } 

    return view('welcome'); 
})->name('home'); 

Text in der Ansicht angezeigt wird, ist eigentlich eine HTTP-Antwort.

+0

oh ok so in der Datei web.php? aber ich will nicht, dass es immer zu News umgeleitet wird, wenn der Benutzer angemeldet ist, nur auf der Willkommensseite –

+0

Der einfachste Weg wäre, diese Überprüfung zum Home-Controller hinzuzufügen. – Laran

+0

ok, also muss ich einen Heimcontroller erstellen? aber ich habe kein Heimmodell. Brauche ich ein Heimmodell? –

2

Ich gehe also davon aus, dass Sie sehen wollen, ob sie bereits eingeloggt sind, und wenn Sie möchten, dass Sie sie von der Anmeldeseite wegleiten möchten? Sie könnten dies in einer Route::get('/signin') Methode auf UserController erreichen. Bevor es die signin Ansicht kehrt könnten Sie Auth::check() tun, und wenn das wahr ist, dann tun die redirect()->route('news')

Sie sollten jedoch beachten, dass Laravel Schiffe mit einer Tonne von Authentifizierungs Gerüsten bereits vorhanden, which you can read about here.

In Ihre web.php, haben diese an die Stelle der / Route nehmen:

Route::get('/', function() { 
    if (Auth::check()) { 
    return redirect()->route('news'); 
    } 
    else { 
    return view('welcome'); 
    } 
} 
+0

ich sehe, aber die Anmeldeseite ist auch die Hauptseite.Ich möchte umleiten von der Hauptseite zu News, wenn der Benutzer angemeldet ist –

+0

so was Sie sagen, dass in 'welcome.blade.php' Sie ein Login-Formular haben, und wenn der Benutzer bereits angemeldet ist, Sie würde sie lieber zu "/ news" umleiten, wo du eine 'news.blade.php' Ansicht anzeigen kannst? – dargue3

+0

das ist genau das –

Verwandte Themen