Laravel-Authentifizierung: Fehlerbehebung „make:auth-Befehl nicht definiert“-Fehler
Beim Versuch, den make:auth-Befehl in Laravel 5.2 auszuführen, Möglicherweise erhalten Sie eine Fehlermeldung, die besagt, dass der Befehl nicht definiert ist. Dieses Problem kann aus verschiedenen Gründen auftreten, die wir im Detail untersuchen werden.
Für Laravel-Versionen 5.2 und älter ist der Befehl make:auth nicht verfügbar. Die folgenden Befehle werden in Laravel 5.2 unterstützt:
Wenn Sie Laravel 5.2 verwenden, können Sie die Authentifizierungsansichten und Routen manuell erstellen Befolgen Sie diese Schritte:
Fügen Sie den folgenden Code zur Datei „routes.php“ hinzu:
<code class="php">// Authentication Routes... Route::get('login', 'Auth\LoginController@showLoginForm')->name('login'); Route::post('login', 'Auth\LoginController@login')->name('login.post'); Route::post('logout', 'Auth\LoginController@logout')->name('logout'); // Registration Routes... Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register'); Route::post('register', 'Auth\RegisterController@register')->name('register.post'); // 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')->name('password.update');</code>
Fügen Sie den folgenden Code zur Datei LoginController.php hinzu:
<code class="php">namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; class LoginController extends Controller { public function showLoginForm() { return view('auth.login'); } public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { // The user was authenticated return redirect()->intended(route('home')); } // The user could not be authenticated return redirect()->back()->withErrors(['email' => 'The provided credentials do not match our records.']); } public function logout(Request $request) { Auth::logout(); return redirect()->route('login'); } }</code>
Fügen Sie den folgenden Code zur Datei RegisterController.php hinzu:
<code class="php">namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; class RegisterController extends Controller { public function showRegistrationForm() { return view('auth.register'); } public function register(Request $request) { $this->validate($request, [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); // Create the user $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password), ]); // Log the user in Auth::login($user); // Redirect the user to the home page return redirect()->route('home'); } }</code>
Fügen Sie den folgenden Code zur Datei ForgotPasswordController.php hinzu:
<code class="php">namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; class ForgotPasswordController extends Controller { public function showLinkRequestForm() { return view('auth.passwords.email'); } public function sendResetLinkEmail(Request $request) { $this->validate($request, [ 'email' => 'required|string|email|max:255', ]); // We will send the reset link to this user. Once we have attempted // to send the link, we will examine the response then see the message we // need to show to the user. Finally, we'll send out a proper // response. $response = Password::sendResetLink( $request->only('email') ); switch ($response) { case Password::RESET_LINK_SENT: return back()->with('status', __($response)); case Password::INVALID_USER: return back()->withErrors(['email' => __($response)]); } } }</code>
Fügen Sie den folgenden Code zur Datei ResetPasswordController.php hinzu:
<code class="php">namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Password; use Illuminate\Validation\ValidationException; class ResetPasswordController extends Controller { public function showResetForm(Request $request, $token = null) { return view('auth.passwords.reset')->with( ['token' => $token, 'email' => $request->email] ); } public function reset(Request $request) { $request->validate([ 'token' => 'required', 'email' => 'required|email', 'password' => 'required|min:6|confirmed', ]); // Here we will attempt to reset the user's password. If it is successful we // will update the password on an existing user and return a response // indicating that the user's password has been reset. $response = Password::reset( $request->only('email', 'password', 'password_confirmation', 'token'), function ($user) use ($request) { $user->forceFill([ 'password' => Hash::make($request->password), 'remember_token' => Str::random(60), ])->save(); // In case of large user base, it's recommended to use // $user->setRememberToken(Str::random(60)); // $user->save(); } ); switch ($response) { case Password::PASSWORD_RESET: return redirect()->route('login')->with('status', __($response)); default: throw ValidationException::withMessages([ 'email' => [__($response)], ]); } } }</code>
Nach Abschluss dieser Schritte sollte in Ihrer Laravel 5.2-Anwendung ein funktionierendes Authentifizierungssystem vorhanden sein.
Für Laravel >= 6
In Laravel 6 und höher wurde der Befehl make:auth durch den Befehl ui ersetzt. Um Authentifizierungsansichten und Routen mit diesem Befehl zu erstellen, führen Sie Folgendes aus:
composer require laravel/ui php artisan ui vue --auth php artisan migrate
Dieser Befehl installiert das Laravel-UI-Paket und erstellt die erforderlichen Authentifizierungsansichten, Routen und Migrationen.
Das obige ist der detaillierte Inhalt vonWarum ist der Befehl „make:auth' in Laravel 5.2 nicht definiert und wie kann ich die Authentifizierung manuell einrichten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!