首页 > 解决方案 > Laravel 仅在未注册用户时检查验证参数

问题描述

我有一个表单,如果没有用户登录,它会显示 Google reCaptcha。如果有用户登录,则不会显示 reCaptcha。

好的。

但是当我验证这些 POST 参数时,我需要检查用户是否登录,以验证 reCaptcha 与否。像这样:

//Check if logged in user
        if (Auth::check()) {
            $request->validate([
                'category' => 'bail|required|numeric',
                'title' => 'bail|required|max:160|banned_words',
                'price' => 'numeric',
                'description' => 'bail|required|banned_words',
                'contact_name' => 'bail|required|max:100',
                'contact_email' => 'bail|required|email|max:140',
                'phone' => 'bail|required|max:20',
                'ad_region' => 'bail|required|numeric',
                "agree" => 'bail|required',
            ]);
        } else {
            $request->validate([
                'category' => 'bail|required|numeric',
                'title' => 'bail|required|max:160|banned_words',
                'price' => 'numeric',
                'description' => 'bail|required|banned_words',
                'contact_name' => 'bail|required|max:100',
                'contact_email' => 'bail|required|email|max:140',
                'phone' => 'bail|required|max:20',
                'ad_region' => 'bail|required|numeric',
                "agree" => 'bail|required',
                'g-recaptcha-response' => 'recaptcha',              //Recaptcha Google Check
            ]);
        }

那么,有没有更漂亮的内联解决方案?

标签: laravellaravel-5laravel-5.8

解决方案


您可以先创建列表。如果用户已登录,则附加 recaptcha:

$fields = [
                'category' => 'bail|required|numeric',
                'title' => 'bail|required|max:160|banned_words',
                'price' => 'numeric',
                'description' => 'bail|required|banned_words',
                'contact_name' => 'bail|required|max:100',
                'contact_email' => 'bail|required|email|max:140',
                'phone' => 'bail|required|max:20',
                'ad_region' => 'bail|required|numeric',
                "agree" => 'bail|required',
            ];
//Check if this is a guest user
if (!Auth::check()) {
   $fields['g-recaptcha-response'] = 'recaptcha';
}

$request->validate($fields);

推荐阅读