添加hCaptcha到Laravel Jetstream(惯性)



我使用的是带有惯性堆栈的Laravel 8 - Jetstream 2.0。

我安装了Vue hCaptcha组件https://github.com/hCaptcha/vue-hcaptcha Vue组件已经在我的登录表单中,看起来很好。

Vue组件正在工作

然后我按照这个指南https://serversideup.net/laravel-hcaptcha-custom-validation-rule/在laravel中设置了hCaptcha规则。

现在我的问题是,在laravel/jetstream中,我可以在提交表单时设置captcha规则。所以captcha是使用的,而不仅仅是显示。

我知道这是一个非常基本的问题,但我对laravel非常陌生,并试图了解vue, inertial .js和jetstream。

Ok,所以在fortify中没有默认的Logincontroller,所以我自己做了一个来验证表单中的captcha。此代码缺乏用户友好的错误消息管理,但验证码正在工作。

Logincontroller

<?php
namespace AppHttpControllersAuth;
use AppHttpControllersController;
use AppModelsUser;
use AppRulesValidHCaptcha;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesHash;
use IlluminateSupportFacadesValidator;

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());
}
}
}

Logincontroller路由

//Custom login controller for Captcha use Route::post('login', 
[LoginController::class, 'authenticate'])->name('login');

相关内容

  • 没有找到相关文章

最新更新