suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Probleme bei der Authentifizierung von Benutzern und der Anzeige von Verifizierungsmeldungen in Laravel

<p>Ich habe Probleme bei der Authentifizierung von Benutzern und der Anzeige von Validierungsmeldungen in Laravel. Beim Versuch, sich anzumelden, wird der Benutzer nicht korrekt authentifiziert und die Authentifizierungsfehlermeldung wird nicht angezeigt. </p> <p>Ich habe mich zur Authentifizierung und Verifizierung an die offizielle Laravel-Dokumentation gehalten, aber selbst mit Hilfe künstlicher Intelligenz habe ich nicht die erwarteten Ergebnisse erzielt.以下是我的一些代码片段:</p> <pre class="brush:php;toolbar:false;">public function store(Request $request) { $request->validate([ 'email' => 'erforderlich|E-Mail', 'Passwort' => 'erforderlich', ]); $credentials = $request->only('email', 'password'); if (auth()->attempt($credentials)) { $user = auth()->user(); $request->session()->put('user', $user); Return Redirect()->route('home'); } throw ValidationException::withMessages([ 'email' => 'Ungültige E-Mail oder Passwort.', ]); }</pre> <p>这是HTML代码:</p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html lang="en"> <Kopf> <meta charset="UTF-8"> <title>Anmelden</title> </head> <Körper> <h1>Anmelden</h1> <form action="/login" method="post"> @csrf <Eingabetyp="E-Mail" name="email" placeholder="E-Mail"> <Eingabetyp="Passwort" name="Passwort" placeholder="Passwort"> <input type="submit" value="Anmelden"> </form> </body> </html></pre> <p>最后,是路由:</p> <pre class="brush:php;toolbar:false;"><?php verwenden Sie IlluminateSupportFacadesRoute; verwenden Sie AppHttpControllersUserController; verwenden Sie AppHttpControllersHomeController; verwenden Sie 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']); ?></pre> <p>确地对用户进行身份验证.Ich verwende auch <code>$request->validate([...])</code> in der Methode <code>store()</code> Validierungsregeln werden festgelegt. Ich gehe davon aus, dass Laravel in der Ansicht <code>login.blade.php</code> eine Fehlermeldung anzeigt, wenn die E-Mail- und Passwortfelder nicht korrekt ausgefüllt sind. </p> <p>Wenn ich das Anmeldeformular mit den richtigen Anmeldeinformationen absende, kann Laravel den Benutzer nicht korrekt authentifizieren und leitet zurück zur Anmeldeseite, ohne dass eine Fehlermeldung angezeigt wird. Wenn ich das Formular mit leeren Feldern oder ungültigen Daten abschicke, wird die entsprechende Fehlermeldung auch nicht in der Ansicht angezeigt. Stattdessen leitet das Formular ohne Rückmeldung zurück zur Anmeldeseite. </p> <p>Ich glaube, dass Laravel den Benutzer aufgrund fehlender oder falscher Konfiguration nicht ordnungsgemäß authentifiziert und die Bestätigungsmeldung nicht anzeigt. </p> <p>Ich wäre sehr dankbar für jede Hilfe, die Sie bei der Lösung dieses Problems leisten können. </p>
P粉071626364P粉071626364447 Tage vor685

Antworte allen(1)Ich werde antworten

  • P粉502608799

    P粉5026087992023-09-05 00:46:08

    您最初验证了电子邮件和密码,这是很好的。登录失败后,您抛出了一个异常,这就是为什么它不会将您重定向到登录页面的原因。所以应该重定向到带有错误的上一页。

    因此,将store方法修改如下:

    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' => '使用的电子邮件或密码无效。']);
    
    }

    现在,在登录页面的blade文件中使用以下代码,这将打印错误。根据需要修改设计或其他内容

    @if($errors->any())
       <h4>{{$errors->first()}}</h4>
    @endif

    Antwort
    0
  • StornierenAntwort