Laravel 5.4 Registerroute deaktivieren

Lesezeit: 5 Minuten

Benutzer-Avatar
Entwickler W

Ich versuche, die Registrierungsroute in meiner Anwendung zu deaktivieren, die in Laravel 5.4 ausgeführt wird.

In meiner Routendatei habe ich nur die

Auth::routes();

Gibt es eine Möglichkeit, die Registerrouten zu deaktivieren?

Benutzer-Avatar
dparoli

Das code:

Auth::routes();

Es ist eine Abkürzung für diese Sammlung von Routen:

// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');

Sie können also die erste durch die Liste der Routen ersetzen und jede Route, die Sie in Ihrer Anwendung nicht möchten, auskommentieren.

Bearbeiten für laravel version => 5.7

In neueren Versionen können Sie einen Parameter hinzufügen Auth::routes() Funktionsaufruf zum Deaktivieren der Registerrouten:

Auth::routes(['register' => false]);

Die E-Mail-Verifizierungsrouten wurden hinzugefügt:

Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');

Übrigens kann man auch deaktivieren Password Reset und Email Verification Strecken:

Auth::routes(['reset' => false, 'verify' => false]);

  • Warum diesen ganzen Abschnitt jeder Authentifizierungsroute schreiben, wenn Sie es einfach tun können Auth::routes(['register' => false]);warum?

    – Haritsinh Gohil

    17. Juli 2019 um 7:50 Uhr

  • @Haritsinh. Die Frage bezog sich auf die Laravel-Version 5.4. Im 5.4 Version die Auth::routes() Die Funktion akzeptiert keine Argumente, die erst in neueren Versionen eingeführt wurden.

    – dparoli

    17. Juli 2019 um 8:05 Uhr


  • ok du hast recht mein freund Auth::routes() unterstützt argument nach laravel 5.7 aber Sie können dies auch in der Laravel-Version tun < 5.7 Route::redirect('register', 'login', 301); das sieht einfacher aus als oben, nicht wahr?

    – Haritsinh Gohil

    17. Juli 2019 um 8:17 Uhr

  • @Haritsinh Ich möchte darauf hinweisen, dass diese Frage markiert ist und explizit für Laravel 5.4 gestellt wird. In Version 5.4 ist die Funktion Route::redirect() hat nicht existiert.

    – dparoli

    17. Juli 2019 um 9:02 Uhr

  • ok, @dparoli es ist meine schuld, ich habe das nicht gesehen, redirect auch hinzugefügt laravel 5.5Entschuldigung, danke fürs Löschen.

    – Haritsinh Gohil

    17. Juli 2019 um 10:13 Uhr

Benutzer-Avatar
Irwing Reza

Seit Laravel 5.7 eine neue $options Parameter wird in die eingeführt Auth::routes() Methode; durch die Sie ein Array übergeben können, um die Generierung von zu steuern erforderlich Routen für die Benutzerauthentifizierung (gültige Einträge können aus der ausgewählt werden 'register', 'reset'oder 'verify' Zeichenfolgenliterale).

Auth::routes(['register' => false]);

  • Die andere Option besteht darin, E-Mail-Verifizierungsrouten hinzuzufügen, die standardmäßig deaktiviert sind. Auth::routes(['verify' => true]);

    – Gewähren

    9. November 2018 um 5:18 Uhr


  • Dies sollte die Antwort sein, da es die beste ist [practice] Möglichkeit, dies zu tun, wenn Sie nur die Registrierungsroute deaktivieren möchten, ohne die anderen Standard-Auth-Routen bearbeiten zu wollen.

    – Fest

    28. Februar 2019 um 9:51 Uhr

  • Dies sollte als die perfekte Antwort angesehen werden, da dies der richtige Weg ist, die Registerrouten zu ignorieren, und auch mit Laravel 5.8 funktioniert.

    – Mehul Panchasara

    14. April 2019 um 18:05 Uhr

Benutzer-Avatar
Elvis Mugabi

Sie könnten dies versuchen.

Route::match(['get', 'post'], 'register', function(){
    return redirect("https://stackoverflow.com/");
});

Fügen Sie diese Routen direkt unter dem hinzu Auth::routes() um die Standardregistrierungsrouten zu überschreiben. Jede Anfrage an die /register route leitet zur baseUrl um.

  • Deaktiviert /login Seite.

    – Jason

    25. Mai 2017 um 17:54 Uhr

  • Funktioniert wirklich gut. Einfache Lösung! Vielen Dank!

    – iaforek

    14. November 2017 um 14:58 Uhr

  • Ganz einfache Lösung und effizient gearbeitet.

    – M Uzair Qadeer

    29. Januar 2019 um 8:13 Uhr

  • @ Jason falsch. Ich habe es mit Laravel 8 mit Larave ui auth bootstrap getestet

    – Freddy Daniel

    6. Juli 2021 um 17:26 Uhr

Das ist täuschend einfach! Sie müssen nur zwei Methoden in Ihrer überschreiben app/Http/Controllers/Auth/RegisterController.php Klasse. Siehe unten, wodurch verhindert wird, dass das Formular angezeigt wird, und vor allem direkte POST-Anforderungen an Ihren Registrierungsantrag blockiert werden.

/**
 * Show the application registration form.
 *
 * @return \Illuminate\Http\Response
 */
public function showRegistrationForm()
{
    return redirect('login');
}

/**
 * Handle a registration request for the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function register(Request $request)
{
    abort(404);
}

Ersetzen Sie in web.php

Auth::routes();

Mit

Auth::routes(['register' => false]);

Damit Sie die Registrierungsroute aus der Standard-Authentifizierungsroutenliste entfernen können. Ich habe es in 5.7 versucht und es hat gut funktioniert.

  • Als ich dies tat, wurde auch meine Anmeldeseite deaktiviert?

    – rubendn

    22. November 2018 um 19:43 Uhr


Benutzer-Avatar
asmmamud

Die oben genannten Lösungen funktionieren zwar, aber ich denke, das ändert sich middleware zu 'auth' in dem App\Http\Controllers\Auth\RegisterController wird eine der einfachsten Lösungen sein. Dadurch werden alle Besucher zur Anmeldeseite weitergeleitet, wenn sie auf eine der Registrierungsrouten zugreifen möchten. So was:

namespace App\Http\Controllers\Auth;
class RegisterController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

  • Als ich dies tat, wurde auch meine Anmeldeseite deaktiviert?

    – rubendn

    22. November 2018 um 19:43 Uhr


Auf meinem Laravel 5.6 Projekt hat diese Methode nicht funktioniert:

Auth::routes(['register' => false]);

Also musste ich die folgende Methode anwenden:

Route::match(['get', 'post'], 'register', function () {
    return abort(403, 'Forbidden');
})->name('register');

1298120cookie-checkLaravel 5.4 Registerroute deaktivieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy