Maison  >  Article  >  développement back-end  >  Pourquoi la commande \"make:auth\" n'est-elle pas définie dans Laravel 5.2 et comment puis-je configurer manuellement l'authentification ?

Pourquoi la commande \"make:auth\" n'est-elle pas définie dans Laravel 5.2 et comment puis-je configurer manuellement l'authentification ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 08:03:29820parcourir

Why is the

Authentification Laravel : Dépannage de l'erreur "make:auth Command Not Defined"

Lors de la tentative d'exécution de la commande make:auth dans Laravel 5.2, vous pouvez rencontrer un message d'erreur indiquant que la commande n'est pas définie. Ce problème peut survenir pour diverses raisons, que nous explorerons en détail.

Pour les versions 5.2 et antérieures de Laravel, la commande make:auth n'est pas disponible. Les commandes suivantes sont prises en charge dans Laravel 5.2 :

  • make:auth
  • make:console
  • make:controller
  • make:entity
  • make:event
  • make:job
  • make:listener
  • make:middleware
  • make:migration
  • make :model
  • make:policy
  • make:presenter
  • make:provider
  • make:repository
  • make:request
  • make:seeder
  • make:test
  • make:transformer

Si vous utilisez Laravel 5.2, vous pouvez créer manuellement les vues et les routes d'authentification en en suivant ces étapes :

  1. Créez le fichier routes.php dans le répertoire routes.
  2. Ajoutez le code suivant au fichier 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. Créez le fichier LoginController.php dans le répertoire app/Http/Controllers/Auth.
  4. Ajoutez le code suivant au fichier 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. Créez le fichier RegisterController.php dans le répertoire app/Http/Controllers/Auth.
  6. Ajoutez le code suivant au fichier 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. Créez le fichier ForgotPasswordController.php dans le répertoire app/Http/Controllers/Auth.
  8. Ajoutez le code suivant au fichier 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. Créez le fichier ResetPasswordController.php dans le répertoire app/Http/Controllers/Auth.
  10. Ajoutez le code suivant au fichier 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. Ouvrez le répertoire resources/views/auth et créez vos vues.

Après avoir terminé ces étapes, vous devriez avoir un système d'authentification fonctionnel dans votre application Laravel 5.2.

Pour Laravel >= 6

Dans Laravel 6 et supérieur, la commande make:auth a été remplacée par la commande ui. Pour créer des vues et des routes d'authentification à l'aide de cette commande, exécutez ce qui suit :

composer require laravel/ui
php artisan ui vue --auth
php artisan migrate

Cette commande installera le package d'interface utilisateur Laravel et créera les vues, routes et migrations d'authentification nécessaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn