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?
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?
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.5
Entschuldigung, danke fürs Löschen.
– Haritsinh Gohil
17. Juli 2019 um 10:13 Uhr
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
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
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');
In der aktuellen Laravel-Version 5.7.5 gibt es dafür eine Option.
Auth::routes(['register' => false]);
– Zohaib Hassan
22. September 2018 um 11:16 Uhr
sehen github.com/laravel/framework/blob/5.7/src/Illuminate/Routing/…
– Zohaib Hassan
22. September 2018 um 11:26 Uhr