Masalah mengesahkan pengguna dan memaparkan mesej pengesahan dalam Laravel
P粉071626364
P粉071626364 2023-09-04 21:41:24
0
1
698
<p>Saya menghadapi masalah mengesahkan pengguna dan memaparkan mesej pengesahan dalam Laravel. Apabila cuba log masuk, pengguna tidak disahkan dengan betul dan mesej ralat pengesahan tidak dipaparkan. </p> <p>Saya mengikuti dokumentasi Laravel rasmi untuk pengesahan dan pengesahan, tetapi walaupun dengan bantuan kecerdasan buatan, saya tidak mendapat hasil yang diharapkan.以下是我的一些代码片段:</p> <pre class="brush:php;toolbar:false;">stor fungsi awam(Minta $request) { $request->validate([ 'e-mel' => 'diperlukan|e-mel', 'kata laluan' => 'diperlukan', ]); $credentials = $request->only('email', 'password'); if (auth()->attempt($credentials)) { $user = auth()->user(); $request->session()->put('user', $user); return redirect()->route('home'); } buang Pengecualian Pengesahan::denganMesej([ 'e-mel' => 'Email atau kata laluan tidak sah.', ]); }</pre> <p>这是HTML代码:</p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html lang="ms"> <kepala> <meta charset="UTF-8"> <title>Log masuk</title> </head> <badan> <h1>Log masuk</h1> <tindakan borang="/log masuk" kaedah="siaran"> @csrf <jenis input="e-mel" nama="e-mel" pemegang tempat="E-mel"> <jenis input="kata laluan" nama="kata laluan" pemegang tempat="Kata Laluan"> <jenis input="serahkan" value="Log Masuk"> </form> </badan> </html></pre> <p>最后,是路由:</p> <pre class="brush:php;toolbar:false;"><?php gunakan IlluminateSupportFacadesRoute; gunakan AppHttpControllersUserController; gunakan AppHttpControllersHomeController; gunakan 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, 'kemas kini']); 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']); ?></pra> <p>我尝试使用登录表单中提供的凭据对用户进行身份验证。如果凭据正确凭据正管地对用户进行身份验证。Saya juga menggunakan <code>$request->validate([...])</code> dalam kaedah <code>store()</code>LoginController</code> Peraturan pengesahan ditetapkan. Saya menjangkakan bahawa jika medan e-mel dan kata laluan tidak diisi dengan betul, Laravel akan memaparkan mesej ralat pada paparan <code>login.blade.php</code> </p> <p>Apabila saya menyerahkan borang log masuk dengan bukti kelayakan yang betul, Laravel gagal untuk mengesahkan pengguna dengan betul dan mengubah hala semula ke halaman log masuk tanpa menunjukkan sebarang mesej ralat. Apabila saya menyerahkan borang dengan medan kosong atau data tidak sah, mesej ralat yang sepadan juga tidak dipaparkan pada paparan. Sebaliknya, borang itu mengubah hala semula ke halaman log masuk tanpa sebarang maklum balas. </p> <p>Saya percaya bahawa disebabkan sesuatu yang hilang atau dikonfigurasikan secara salah, Laravel tidak mengesahkan pengguna dengan betul dan memaparkan mesej pengesahan. </p> <p>Saya amat berterima kasih atas sebarang bantuan yang anda boleh berikan untuk menyelesaikan isu ini. </p>
P粉071626364
P粉071626364

membalas semua(1)
P粉502608799

Anda mengesahkan e-mel dan kata laluan anda pada mulanya, itu bagus. Selepas log masuk gagal, anda telah memberikan pengecualian, itulah sebabnya ia tidak mengalihkan anda ke halaman log masuk. Jadi ia harus mengubah hala ke halaman sebelumnya dengan ralat.

Oleh itu, ubah suai kaedah stor seperti berikut:

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

}

Sekarang, gunakan kod berikut dalam fail blade halaman log masuk, ini akan mencetak ralat. Ubah suai reka bentuk atau kandungan lain mengikut keperluan

@if($errors->any())
   <h4>{{$errors->first()}}</h4>
@endif
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan