在 Laravel 中,我正在设置 Google ReCaptcha V3 ,它现在返回一个“分数”。我已经成功设置了一个验证规则,以允许我的表单提交(所有工作正常),但这只是返回true或false来通过验证。
我该如何基于分数呢?
我正在使用此作曲家软件包来帮助我-https://github.com/google/recaptcha
这在我的控制器中(我在其中发送令牌以与服务器进行验证):
// validation
$this->validate( $request, array(
'g_recaptcha_response' => ['required', 'string', new Captcha()]
));
这是规则:
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use ReCaptcha\ReCaptcha;
class Captcha implements Rule
{
public function __construct()
{
//
}
public function passes($attribute, $value)
{
$recaptcha = new ReCaptcha('SECRET');
$response = $recaptcha->verify($value, $_SERVER['REMOTE_ADDR']);
return $response->isSuccess();
}
public function message()
{
return 'Are you a robot?';
}
}
我可以通过控制器以某种方式访问该类吗?我可以在软件包中看到需要使用->getScore()
的消息,但是我不知道如何访问它?
答案 0 :(得分:0)
正如您在验证规则中所做的那样,您还可以在controller中获得分数:
public function something(YourRequest $request){
$recaptcha = new ReCaptcha('SECRET');
$response = $recaptcha->verify($request->g_recaptcha_response, $request->ip());
$score = $response->getScore();
}
可以找到更多可用的应对方法here