Laravel でのユーザーの認証と確認メッセージの表示に関する問題
P粉071626364
2023-09-04 21:41:24
<p>Laravel でのユーザーの認証と検証メッセージの表示に問題があります。ログインしようとすると、ユーザーが正しく認証されず、認証エラー メッセージが表示されません。 </p>
<p>Laravel の公式ドキュメントに従って認証と検証を行いましたが、人工知能の助けを借りても期待した結果は得られませんでした。私のコードの一部を以下に示します。 </p>
<pre class="brush:php;toolbar:false;">パブリック関数ストア(Request $request)
{
$request->validate([
'電子メール' => '必須|電子メール',
'パスワード' => '必須'、
]);
$credentials = $request->only('メールアドレス', 'パスワード');
if (auth()->attempt($credentials)) {
$user = auth()->user();
$request->session()->put('user', $user);
return redirect()->route('home');
}
throw ValidationException::withMessages([
'電子メール' => '電子メールまたはパスワードが無効です。',
]);
}</pre>
<p>これは HTML コードです: </p>
<pre class="brush:php;toolbar:false;"><!DOCTYPE html>
<html lang="ja">
<頭>
<title>ログイン</title>
</head>
<本体>
<h1>ログイン</h1>
<フォームアクション="/ログイン"メソッド="post""
@csrf
<input type="email" name="email" placeholder="Email">
<入力タイプ="パスワード"名前="パスワード"プレースホルダー="パスワード">
<入力タイプ = "送信" 値 = "ログイン" >
</フォーム>
</ボディ>
</html></pre>
<p>最後に、ルート: </p>
<pre class="brush:php;toolbar:false;"><?php
Illuminate\Support\Facades\Route を使用します。
App\Http\Controllers\UserController を使用します。
App\Http\Controllers\HomeController を使用します。
App\Http\Controllers\LoginController を使用します。
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>ログイン フォームに入力された認証情報を使用してユーザーを認証しようとしています。資格情報が正しければ、Laravel がユーザーを正しく認証すると期待されます。また、<code>LoginController</code> の <code>store()</code> メソッドでも <code>$request->validate([...])</code> を使用します。検証ルールが設定されています。電子メールとパスワードのフィールドが正しく入力されていない場合、Laravel は <code>login.blade.php</code> ビューにエラー メッセージを表示すると予想します。 </p>
<p>正しい資格情報を使用してログインフォームを送信すると、Laravel はユーザーを正しく認証できず、エラーメッセージが表示されずにログインページにリダイレクトされます。空のフィールドまたは無効なデータを含むフォームを送信すると、対応するエラー メッセージもビューに表示されません。代わりに、フォームはフィードバックなしでログイン ページにリダイレクトされます。 </p>
<p>何かが欠落しているか、正しく構成されていないため、Laravel がユーザーを適切に認証せず、検証メッセージを表示していないと思われます。 </p>
<p>この問題を解決するためにご協力いただければ幸いです。 </p>
最初に電子メールとパスワードを確認しましたが、これは問題ありません。ログインに失敗した後、例外がスローされたため、ログイン ページにリダイレクトされません。そのため、エラーが発生して前のページにリダイレクトされるはずです。
したがって、store メソッドを次のように変更します。
リーリー次に、ログイン ページのブレード ファイルで次のコードを使用します。これにより、エラーが出力されます。必要に応じてデザインやその他のコンテンツを変更します
リーリー