好的,所以 fortitfy 中没有默认的 Logincontroller,所以我自己制作了验证表单中的验证码。此代码缺少用户友好的错误消息管理,但验证码可以正常工作。
登录控制器
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Rules\ValidHCaptcha;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class LoginController extends Controller
{
public function authenticate(Request $request)
{
// Retrive Input
$validation = $request->only('email', 'password', 'hcaptcharesponse');
Validator::make($validation, [
'email' => ['required', 'string', 'email', 'max:255'],
'password' => ['required'],
'hcaptcharesponse' => ['required', new ValidHCaptcha()],
])->validate();
try {
$user = User::where('email', $request->email)->first();
if ($user && Hash::check($request->password, $user->password)) {
Auth::login($user);
return redirect('/dashboard');
}
} catch (Exception $e) {
dd($e->getMessage());
}
}
}
登录控制器的路由
//Custom login controller for Captcha use Route::post('login',
[LoginController::class, 'authenticate'])->name('login');