ホームページ  >  記事  >  バックエンド開発  >  Laravel 5.2 では「make:auth」コマンドが定義されていないのはなぜですか? 認証を手動で設定するにはどうすればよいですか?

Laravel 5.2 では「make:auth」コマンドが定義されていないのはなぜですか? 認証を手動で設定するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 08:03:29820ブラウズ

Why is the

Laravel 認証: 「make:auth コマンドが定義されていません」エラーのトラブルシューティング

Laravel 5.2 で make:auth コマンドを実行しようとすると、コマンドが定義されていないことを示すエラー メッセージが表示される場合があります。この問題はさまざまな理由で発生する可能性がありますが、詳しく説明します。

Laravel バージョン 5.2 以前では、make:auth コマンドは使用できません。 Laravel 5.2 では次のコマンドがサポートされています:

  • make:auth
  • make:console
  • make:controller
  • make:entity
  • make:event
  • make:job
  • make:listener
  • make:ミドルウェア
  • make:migration
  • make :model
  • make:policy
  • make:presenter
  • make:provider
  • make:repository
  • make:request
  • make:seeder
  • make:test
  • make:transformer

Laravel 5.2 を使用している場合は、次のようにして認証ビューとルートを手動で作成できます。次の手順に従ってください:

  1. routes ディレクトリに Routes.php ファイルを作成します。
  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>
  3. app/Http/Controllers/Auth ディレクトリに LoginController.php ファイルを作成します。
  4. 次のコードを 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>
  5. app/Http/Controllers/Auth ディレクトリに RegisterController.php ファイルを作成します。
  6. 次のコードを 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>
  7. app/Http/Controllers/Auth ディレクトリに ForgotPasswordController.php ファイルを作成します。
  8. 次のコードを 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>
  9. app/Http/Controllers/Auth ディレクトリに ResetPasswordController.php ファイルを作成します。
  10. 次のコードを 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>
  11. resources/views/auth ディレクトリを開いてビューを作成します。

これらの手順を完了すると、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。