如何在中间件中验证电子邮件

时间:2021-03-25 07:02:22

标签: laravel laravel-8

我正在尝试在中间件上验证电子邮件,所以我需要的是,如果用户的电子邮件不是电子邮件,那么它需要重定向到特定页面,但我不确定如何验证。我知道您使用 $request->validate([]) 的表格,但我不确定在我的情况下如何使用。

这是我的中间件


public function handle(Request $request, Closure $next)
{
    $validate = $request->validate([
        'email' => 'email'
    ]);

    if(!$validate)
    {
        return redirect('/wrong-email');
    }
}

3 个答案:

答案 0 :(得分:1)

最好直接在您的控制器中进行。但是如果你坚持在中间件上做,你可以直接使用 Validator 门面:

use Illuminate\Support\Facades\Validator;

...

public function handle(Request $request, Closure $next)
{
  $validator = Validator::make($request->all(), [
      'email' => 'email',
  ]);

  if ($validator->fails()) {
    return redirect('/wrong-email');
  }

  return $next($request);
}

答案 1 :(得分:0)

您可以手动创建验证器:

 $validator = Validator::make([
        'email' =>$request->input(email)
    ], [
            'email' => 'email',
        ]);

if ($validator->fails()) {
            return redirect('/wrong-email');
        }

或者只是使用您的 $request:

$request->validate([
        'email' => 'email'
    ]);

答案 2 :(得分:0)

你可以试试这个

   $v = Validator::make($request->all(), [
        'email' => 'required|email|unique:users'
    ]);

if ($v->fails())
{
    return redirect()->back()->withErrors($v->errors());
}

//