2016-05-30 22 views
-1

Ich benutze Larave 5 für mein Projekt. In meinem Projekt verwende ich Laravel-Standardauth, die diesen Befehl php artisan make:auth verwenden. Und ich gesetzt Middleware in meinem route.php alsWie man Laravel 5 Middleware Auth einstellen?

gezeigt
Route::group(['middleware' => 'web'], function() { 

    // Authentication Routes... 
    Route::auth();  
    Route::get('/', 'Auth\[email protected]'); 
    Route::post('auth/login', 'Auth\[email protected]'); 
    Route::get('auth/logout', 'Auth\[email protected]'); 

    // Admin Roles Routes... 
    Route::get('admin/roles', '[email protected]'); 
}); 

Jetzt ist meine Frage, ob ich die Abmeldung eines Benutzers ist, und klicken Sie auf Browser zurück Benutzernamen und Benutzer-Taste zugreifen können wie Hinzufügen, Bearbeiten, Löschen Ansicht nach dem Abmelden. Wie kann ich mit dieser Situation umgehen? Bitte helfen Sie mir, dass ich Code verpasse, den ich vermisse.

Antwort

2

Zu allererst Ihre Route :: Auth() bereits funktioniert hat Anmelde- und Abmeldefunktionen, wenn Sie ‚php Handwerker Route: Liste‘ laufen in Ihrem Terminal können Sie sehen, welche Routen verfügbar etc ..

an zweiter Stelle von allen können Sie eine Gruppe erstellen, wie unten für Ihre Admin Sachen gezeigt:

Route::group(['middleware' => 'web'], function() { 

    // Authentication Routes... 
    Route::auth();  

    // Admin Roles Routes... 
    Route::group(['prefix'=>'admin', 'middleware'=>'auth'], function() { 
     Route::get('roles', '[email protected]'); 
    }); 
}); 

ich hoffe, das funktioniert für Sie;)

Btw, Sie die Laravel docs sagen viel ..., so stellen sicher, dass Sie sie zuerst sehen;)

+0

aber nach Abmelde Benutzer klicken Sie auf Zurück-Taste immer noch alle Seiten arbeiten ich will, wenn der Benutzer sich abmelden und Benutzer klicken Sie auf Browser-Umleitung zurück Taste automatisch zur Login-Seite –

+0

Ich muss einen Code in anderen Controller für Auth schreiben? –

+0

Ich glaube nicht, dass Sie den "Zurück" -Button ändern können, um ihn auf die Login-Seite umzuleiten. Deshalb ist es ein Zurück-Button. Das einzige, was Sie tun können, ist sicherzustellen, dass Ihre Routen geschützt werden müssen eine Auth-Middleware, damit sie nach dem Abmelden nichts ändern können. – Rick

1

Das erste, was ist, dass Sie es von RouteServiceProvider, auf Ihre Routen angewendet gelten müssen nicht web Middleware wie bereits https://laravel.com/docs/5.2/middleware#registering-middleware

Zweitens sehen, wenn die Verwendung Route:auth() es eine Abkürzung für ist:

$this->get('login', 'Auth\[email protected]'); 
$this->post('login', 'Auth\[email protected]'); 
$this->get('logout', 'Auth\[email protected]'); 

$this->get('register', 'Auth\[email protected]'); 
$this->post('register', 'Auth\[email protected]'); 

$this->get('password/reset/{token?}', 'Auth\[email protected]'); 
$this->post('password/email', 'Auth\[email protected]'); 
$this->post('password/reset', 'Auth\[email protected]'); 

Sie also müssen diese Routen nicht definieren:

Route::post('auth/login', 'Auth\[email protected]'); 
Route::get('auth/logout', 'Auth\[email protected]'); 

Schließlich, warum Sie Login auf Ihrer Homepage setzen?

Route::get('/', 'Auth\[email protected]'); 

sollte Dieses Beispiel Arbeit:

Route::group(['middleware' => 'auth'], function() { 
    Route::get('/', function() { 
     return 'Hello! You are logged in.'; 
    }); 

    // Admin Roles Routes... 
    Route::get('admin/roles', '[email protected]'); 
}); 

Route::auth(); 

Mit den Routen oben, wenn sie versuchen nicht authentifizierter Benutzer Ihre Homepage http://yoursite.com und http://yoursite.com/admin/roles zuzugreifen, wird der Benutzer zu http://yoursite.com/login umgeleitet werden, da die Seiten von auth geschützt sind Middleware.

+0

dies ist Voraussetzung, wenn die Website geladen wird erste Seite wird Login –

+0

@dhanashri Wenn ja, dann müssen Sie "Auth" Middleware auf Ihre Homepage Route anwenden, wenn der Benutzer nicht eingeloggt er automatisch zur Anmeldeseite umgeleitet wird. – Rifki

+0

Ich versuche viel Zeit, aber ich weiß nicht, was ist mein Fehler .. oder in meinem Multi-Controller setzen Sie einen Code für auth –

0

Ein Zusatz zu @Rick Antwort.

Sie können eine Middleware auch manuell in der Funktion __construct() Ihres Controllers einrichten.

Beispiel:

// SomeController.php 

public function __construct() 
{ 

    $this->middleware('auth'); 

} 

Documentation

Verwandte Themen