在带有ReCaptcha V3的Laravel中,如何访问规则返回的“分数”?

时间:2019-02-17 18:00:37

标签: laravel recaptcha recaptcha-v3

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()的消息,但是我不知道如何访问它?

1 个答案:

答案 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