2017-10-16 5 views
0

Ich muss sie vor dem Betrachten schützen. Das heißt, ohne sich einzuloggen, sollte es nicht auf andere Seiten umgeleitet werden, wenn jemand versucht, darauf zuzugreifen, sollte es zur Anmeldeseite zurückkehren.Wie kann ich meine Laravel-Authentifizierung schützen

Ich verwende Laravel 5.4 und regelmäßige Authentifizierung

php artisan make:auth 

Und Login Controller

protected $redirectTo = '/home'; 

Und in Middleware RedirectifAuthenticated ich so bin versucht, aber es funktioniert nicht.

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return redirect('/home'); 
     return redirect('/leadsadd'); 
     return redirect('/leadslist'); 
     return redirect('/opporadd'); 
     return redirect('/opporlist'); 
     return redirect('/accadd'); 
     return redirect('/acclist'); 
     return redirect('/selftask'); 
} 

    return $next($request); 

} 

Es funktioniert nicht. Ich denke, die Methode, die ich tue, ist falsch. Kann mir jemand helfen wie ich das verhindern kann und nicht auf irgendeine Route oder URL umleiten sollte? Strecke

Route::get('/', function() { 
return view('auth.login'); 
}); 

Auth::routes(); 
Route::get('/home', '[email protected]')->name('home'); 

Route::get('leadsadd','[email protected]'); 
Route::get('leadslist', '[email protected]'); 
Route::any('leadview/{id}','[email protected]'); 
Route::get('leadedit/{id}','[email protected]'); 

Vielen Dank im Voraus.

+3

Wie werden Sie zu 8 verschiedene Seiten umleiten? Sie können nur einmal pro Anfrage umleiten. Diese Funktion wird immer zu "/ home" umgeleitet, wenn der Benutzer angemeldet ist. Alle anderen Returns sind nicht erreichbarer Code. – Jerodev

+0

nein, nicht so, dass ich sage, dass wir verschiedene Routen wie (localhost: 8000 \ hinzufügen, localhost: 8000 \ view, localhost: 8000 \ home,) wie oben angegeben haben werden. Nur wenn ich versuche, auf localhost: 8000 \ home zuzugreifen, wird auf die Anmeldeseite umgeleitet. Andere öffnen sich direkt ohne Login-Anfrage. – Hemanth

+1

Dies sollte in Ihrer Routes-Datei mit einer Middleware definiert werden. Können Sie den Inhalt Ihrer 'routes/web.php' anzeigen? – Jerodev

Antwort

3

Sie sollten group your routes und fügen Sie die auth Middleware zu. Diese Middleware wird automatisch auf die Anmeldeseite umgeleitet, wenn ein nicht authentifizierter Benutzer versucht, eine dieser Seiten zu besuchen.

Route::get('/home', '[email protected]')->name('home'); 

Route::middleware(['auth'])->group(function() { 
    Route::get('leadsadd','[email protected]'); 
    Route::get('leadslist', '[email protected]'); 
    Route::any('leadview/{id}','[email protected]'); 
    Route::get('leadedit/{id}','[email protected]'); 
}); 
+0

Vielen Dank, es hat mir geholfen – Hemanth

0

Es gibt folgende zwei Möglichkeiten, um Ihre Routen in Laravel 5.4

Eine Möglichkeit, zu schützen, ist die Auth-Middleware mit der Route in Ihrer web.php Datei

Route::get('profile', function() { 
    // Only authenticated users may enter... 
})->middleware('auth'); 

Die andere Art und Weise zu befestigen ist zu befestigen die Middleware im Konstruktor Ihres Controllers, der Ihre Route behandelt.

public function __construct() 
{ 
    $this->middleware('auth'); 
} 
1

Sie müssen dies wie diese

Route::group(['middleware' => 'auth'], function() { 
     // all authenticated users will have the access here! 
     ]]); 

in Ihre Routen tun und Ihre RedirectIfAuthenticated.php sollte ursprünglich werden wieder zurück

public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 
      return redirect('/yourdashboardorwhatever'); 
     } 

     return $next($request); 
    } 
Verwandte Themen