ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 5.2 では「make:auth」コマンドが定義されていないのはなぜですか? 認証を手動で設定するにはどうすればよいですか?
Laravel 認証: 「make:auth コマンドが定義されていません」エラーのトラブルシューティング
Laravel 5.2 で make:auth コマンドを実行しようとすると、コマンドが定義されていないことを示すエラー メッセージが表示される場合があります。この問題はさまざまな理由で発生する可能性がありますが、詳しく説明します。
Laravel バージョン 5.2 以前では、make:auth コマンドは使用できません。 Laravel 5.2 では次のコマンドがサポートされています:
Laravel 5.2 を使用している場合は、次のようにして認証ビューとルートを手動で作成できます。次の手順に従ってください:
次のコードを Routes.php ファイルに追加します:
<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>
次のコードを LoginController.php ファイルに追加します。
<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>
次のコードを RegisterController.php ファイルに追加します。
<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>
次のコードを ForgotPasswordController.php ファイルに追加します:
<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>
次のコードを ResetPasswordController.php ファイルに追加します:
<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>
これらの手順を完了すると、Laravel 5.2 アプリケーションで認証システムが動作するようになります。
Laravel の場合 >= 6
Laravel 6 以降では、make:auth コマンドは ui コマンドに置き換えられました。このコマンドを使用して認証ビューとルートを作成するには、次のコマンドを実行します。
composer require laravel/ui php artisan ui vue --auth php artisan migrate
このコマンドは、Laravel UI パッケージをインストールし、必要な認証ビュー、ルート、移行を作成します。
以上がLaravel 5.2 では「make:auth」コマンドが定義されていないのはなぜですか? 認証を手動で設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。