Problèmes d'authentification des utilisateurs et d'affichage des messages de vérification dans Laravel
P粉071626364
P粉071626364 2023-09-04 21:41:24
0
1
674
<p>J'ai du mal à authentifier les utilisateurs et à afficher les messages de validation dans Laravel. Lors de la tentative de connexion, l'utilisateur n'est pas authentifié correctement et le message d'erreur d'authentification ne s'affiche pas. </p> <p>J'ai suivi la documentation officielle de Laravel pour l'authentification et la vérification, mais même avec l'aide de l'intelligence artificielle, je n'ai pas obtenu les résultats escomptés.以下是我的一些代码片段:</p> <pre class="brush:php;toolbar:false;">magasin de fonctions public (Request $request) { $request->valider([ 'e-mail' => 'obligatoire|e-mail', 'mot de passe' => 'requis', ]); $credentials = $request->only('email', 'password'); if (auth()->attempt($credentials)) { $user = auth()->user(); $request->session()->put('user', $user); return redirect()->route('home'); } lancer ValidationException::withMessages([ 'e-mail' => 'Email ou mot de passe invalide.', ]); }</pré> <p>这是HTML代码:</p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html lang="fr"> <tête> <meta charset="UTF-8"> <titre>Connexion</titre> ≪/tête> <corps> <h1>Connexion</h1> <form action="/connexion" method="post"> @csrf <type d'entrée="e-mail" nom = "e-mail" placeholder="E-mail"> <type d'entrée="mot de passe" nom = "mot de passe" placeholder="Mot de passe"> <input type="soumettre" value="Connexion"> </formulaire> </corps> </html></pre> <p>最后,是路由:</p> <pre class="brush:php;toolbar:false;"><?php utilisez IlluminateSupportFacadesRoute ; utilisez AppHttpControllersUserController ; utilisez AppHttpControllersHomeController ; utilisez AppHttpControllersLoginController ; Route::get('/users', [UserController::class, 'index'])->name('users.index'); Route::get('/users/create', [UserController::class, 'create']); Route::post('/users', [UserController::class, 'store']); Route::get('/users/{user}', [UserController::class, 'show']); Route::get('/users/{user}/edit', [UserController::class, 'edit']); Route::put('/users/{user}', [UserController::class, 'update']); Route::delete('/users/{user}', [UserController::class, 'destroy'])->name('users.destroy'); Route::get('/home', [HomeController::class, 'index'])->name('home'); Route::get('/login', [LoginController::class, 'index'])->name('login'); Route::post('/login', [LoginController::class, 'store']); ?>≪/pré> <p>确地对用户进行身份验证。J'utilise également <code>$request->validate([...])</code> dans la méthode <code>store()</code> Des règles de validation sont définies. Je m'attends à ce que si les champs e-mail et mot de passe ne sont pas remplis correctement, Laravel affichera un message d'erreur dans la vue <code>login.blade.php</code> </p> <p>Lorsque je soumets le formulaire de connexion avec les informations d'identification correctes, Laravel ne parvient pas à authentifier correctement l'utilisateur et redirige vers la page de connexion sans afficher de message d'erreur. Lorsque je soumets le formulaire avec des champs vides ou des données invalides, le message d'erreur correspondant ne s'affiche pas non plus sur la vue. Au lieu de cela, le formulaire redirige vers la page de connexion sans aucun retour. </p> <p>Je crois qu'en raison de quelque chose manquant ou mal configuré, Laravel n'authentifie pas correctement l'utilisateur et n'affiche pas le message de vérification. </p> <p>Je serais très reconnaissant pour toute aide que vous pourriez nous apporter pour résoudre ce problème. </p>
P粉071626364
P粉071626364

répondre à tous(1)
P粉502608799

Vous avez initialement vérifié votre e-mail et votre mot de passe, ce qui est bien. Après l'échec de la connexion, vous avez généré une exception, c'est pourquoi il ne vous redirige pas vers la page de connexion. Il devrait donc rediriger vers la page précédente avec une erreur.

Par conséquent, modifiez la méthode store comme suit :

public function store(Request $request)
{
    $request->validate([
        'email' => 'required|email',
        'password' => 'required',
    ]);

    $credentials = $request->only('email', 'password');

    if (auth()->attempt($credentials)) {
        $user = auth()->user();
        $request->session()->put('user', $user);
        return redirect()->route('home');
    }

    return redirect()->back()->withErrors(['msg' => '使用的电子邮件或密码无效。']);

}

Maintenant, utilisez le code suivant dans le fichier blade de la page de connexion, cela imprimera l'erreur. Modifiez le design ou tout autre contenu selon vos besoins

@if($errors->any())
   <h4>{{$errors->first()}}</h4>
@endif
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal