📅  最后修改于: 2023-12-03 14:43:46.470000             🧑  作者: Mango
在 Laravel 中,通过使用预置的验证规则,开发人员可以轻松地将电子邮件验证整合到应用程序中。在这里,我们将为您提供有关 Laravel 中电子邮件验证的详细信息。
要配置 Laravel 中的电子邮件验证,我们需要在 config/auth.php
文件中添加以下内容:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
这将允许 Laravel 应用程序使用 users
数据库表进行用户验证,并为每个用户创建 password_resets
表。
我们还需要更新 User
模型,以包含 Illuminate\Auth\Passwords\CanResetPassword
trait 和 Illuminate\Contracts\Auth\CanResetPassword
接口:
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Authenticatable implements CanResetPasswordContract
{
use Notifiable, CanResetPassword;
...
}
现在,我们将定义一个电子邮件验证规则。首先,我们需要创建一个新的验证器:
use Illuminate\Contracts\Validation\Validator;
class EmailValidator implements Validator
{
protected $email;
protected $errors = [];
public function __construct($email)
{
$this->email = $email;
}
public function fails()
{
$this->validate();
return !empty($this->errors);
}
public function errors()
{
return $this->errors;
}
protected function validate()
{
if (!filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
$this->errors['email'] = 'Invalid email address.';
}
}
}
然后,我们可以在 AppServiceProvider
中创建一个自定义验证规则:
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('valid_email', function ($attribute, $value, $parameters, $validator) {
$validator = new EmailValidator($value);
return !$validator->fails();
});
}
public function register()
{
//
}
}
现在,我们已经创建了一个可用的电子邮件验证规则,我们可以使用它来验证用户的电子邮件地址。
为了在控制器中使用电子邮件验证,我们可以在控制器中添加以下代码:
public function validateEmail(Request $request)
{
$this->validate($request, [
'email' => 'required|valid_email'
]);
return response()->json([
'message' => 'Email is valid.'
]);
}
这将要求请求必须包含一个 email
参数,并使用我们刚刚创建的 valid_email
规则来验证该参数的值是否为有效的电子邮件地址。
在本文中,我们深入探讨了 Laravel 中的电子邮件验证。我们了解到如何配置电子邮件验证,如何编写电子邮件验证规则,并如何在控制器中使用电子邮件验证。我们希望这篇文章对 Laravel 开发人员能够有所帮助。