Heim > PHP-Framework > Laravel > Hauptteil

So leiten Sie Benutzer um, die nicht bei Laravel angemeldet sind

PHPz
Freigeben: 2023-04-07 17:23:16
Original
944 Leute haben es durchsucht

Laravel ist heute eines der beliebtesten PHP-Entwicklungsframeworks. Es bietet viele nützliche Funktionen und Tools, die uns helfen können, Webanwendungen schnell zu entwickeln und zu testen. Eine der wichtigen Funktionen ist das Benutzerauthentifizierungssystem (Authentifizierung). In den meisten Anwendungen müssen wir sicherstellen, dass nur authentifizierte Benutzer auf vertrauliche Seiten und Funktionen zugreifen können. In diesem Artikel erfahren Sie, wie Sie einen Sprung für nicht angemeldete Benutzer in Laravel implementieren, und erhalten einige nützliche Tipps und Vorschläge.

Verwenden Sie Middleware, um nicht angemeldete Benutzer umzuleiten.

In Laravel können wir Middleware verwenden, um Anfragen zu bearbeiten. Middleware hilft uns dabei, bestimmte Aktionen durchzuführen, bevor oder nachdem die Anfrage den Controller erreicht. In unserer Anwendung können wir Middleware verwenden, um zu überprüfen, ob der Benutzer bereits angemeldet ist. Wenn der Benutzer nicht angemeldet ist, können wir ihn zur Anmeldeseite weiterleiten.

Zunächst richten wir eine Middleware namens Guest ein. Wir können es mit dem Artisan-Befehl erstellen php artisan make:middleware GuestMiddleware. Anschließend können wir Code in die Gast-Middleware schreiben, um zu überprüfen, ob der Benutzer bereits angemeldet ist:

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

Hier verwenden wir Auth::guard($guard)->check(), um zu überprüfen, ob der Benutzer bereits angemeldet ist. Wenn ja, leiten wir den Benutzer zur Seite /home weiter. Wenn nicht, wird die Steuerung an die nächste Middleware- oder Controller-Aktion übergeben.

Als nächstes können wir die Gast-Middleware in der Routendefinition verwenden. Beispielsweise können wir die folgende Route in der Datei web.php definieren:

Route::group(['middleware' => ['guest']], function () {
    Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
    Route::post('login', 'Auth\LoginController@login');
});
Nach dem Login kopieren

Hier wenden wir die Gast-Middleware auf die gesamte Routengruppe an. Dies bedeutet, dass die Gast-Middleware beim Zugriff auf /login und beim Absenden des Anmeldeformulars prüft, ob der Benutzer bereits angemeldet ist. Wenn der Benutzer bereits angemeldet ist, wird er zur Seite /home weitergeleitet. Andernfalls wird der Controller-Betrieb fortgesetzt.

Verwenden Sie den Authentifizierungscontroller, um zu nicht angemeldeten Benutzern zu springen

Eine andere Möglichkeit, zu nicht angemeldeten Benutzern zu springen, besteht darin, Merkmale im Authentifizierungscontroller zu verwenden. In Laravel können wir einige Merkmale verwenden, um Benutzerauthentifizierungsfunktionen einfach zu implementieren. Eine dieser Eigenschaften ist IlluminateFoundationAuthAuthenticatesUsers. Dieses Merkmal enthält Vorgänge für angemeldete und abgemeldete Benutzer sowie eine Umleitungslogik.

Erstens erstellen wir einen Controller namens CustomLoginController und verwenden das Merkmal AuthenticatesUsers:

use Illuminate\Foundation\Auth\AuthenticatesUsers;

class CustomLoginController extends Controller
{
    use AuthenticatesUsers;
}
Nach dem Login kopieren

Hier sorgen wir dafür, dass der CustomLoginController das Merkmal AuthenticatesUsers verwendet.

Als nächstes können wir die Methode „showLoginForm“ und die Methode „authenticated“ im Merkmal „AuthenticatesUsers“ überschreiben. Innerhalb dieser Methoden können wir die Anmeldeseite und die Umleitungslogik angeben:

use Illuminate\Foundation\Auth\AuthenticatesUsers;

class CustomLoginController extends Controller
{
    use AuthenticatesUsers;

    protected function showLoginForm()
    {
        return view('auth.login');
    }

    protected function authenticated(Request $request, $user)
    {
        return redirect()->route('home');
    }
}
Nach dem Login kopieren

Hier überschreiben wir die showLoginForm-Methode, um die Ansicht „auth.login“ zurückzugeben. Wir überschreiben die authentifizierte Methode, um auf die Route „home“ umzuleiten.

Schließlich können wir die folgenden Routen in der web.php-Datei definieren:

Route::get('login', 'CustomLoginController@showLoginForm')->name('login');
Route::post('login', 'CustomLoginController@login');
Route::get('home', function () {
    return view('home');
})->name('home');
Nach dem Login kopieren

Hier definieren wir die GET-Route für die Anmeldeseite, die POST-Route zum Absenden des Anmeldeformulars und die GET-Route für die Homepage. In CustomLoginController verarbeiten die von uns geschriebenen showLoginForm- und authentifizierten Methoden das Anmeldeformular und die Umleitungslogik.

Fazit

In diesem Artikel haben wir vorgestellt, wie man einen Sprung für nicht angemeldete Benutzer in Laravel implementiert. Es gibt zwei Möglichkeiten, dies zu erreichen: die Verwendung von Middleware und die Verwendung eines Authentifizierungscontrollers. Unabhängig davon, für welche Methode Sie sich entscheiden, können Sie Ihre sensiblen Seiten und Funktionen schützen, indem Sie sicherstellen, dass nur authentifizierte Benutzer darauf zugreifen können. Wenn Sie eine Laravel-Anwendung entwickeln, dürften diese Tipps und Ratschläge für Sie sehr nützlich sein.

Das obige ist der detaillierte Inhalt vonSo leiten Sie Benutzer um, die nicht bei Laravel angemeldet sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage