laravel 自定义邮箱验证过期时间
admin
2024-02-03 15:01:03

使用像 Laravel 这样的框架的最大好处之一是许多常见的用例或问题已经得到解决;邮箱验证也不例外。

从 Laravel 5.7 开始,可以使用 Laravel 开箱即用地实现电子邮件验证 wpcmf cms。

我假设您已经拥有此设置并在您自己的环境中工作。

默认情况下,Laravel 发出的验证邮件将在60 分钟后过期。在某些情况下这可能没问题,但在我的情况下这没有任何实际用途。用户抱怨他们点击了链接,只是因为它不起作用,而且由于旧链接过期,他们不得不请求新的验证电子邮件。

要解决这个问题,有两种解决方案,更新配置的过期时间,或者重写生成验证 URL 的方法。

更新配置的过期时间

这是 Laravel 5.8 中引入的功能,所以如果你还在使用 Laravel 5.7,请跳到下一节。

如果我们检查,Illuminate\Auth\Notifications\VerifyEmail我们可以看到该verificationUrl方法如下所示:

protected function verificationUrl($notifiable)
{return URL::temporarySignedRoute('verification.verify',Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)),['id' => $notifiable->getKey(),'hash' => sha1($notifiable->getEmailForVerification()),]);
}

正如您在上面看到的,在生成临时签名路由时,框架会尝试在 处获取一个配置变量,auth.verification.expire如果找不到,则会回退到 60 分钟。

如果您仍想在验证 URL 中包含过期时间,则只需将过期时间的配置设置添加到您的config/auth.php文件中,如下所示:

'verification' => ['expire' => 525600, // One year in minutes - enter as many minutes as you would like here
],

覆盖验证 URL 的生成

就我而言,我不想只更新过期时间,我想完全删除它;赞成简单的签名路线。

为此,我们只需要扩展VerifyEmail类并覆盖verificationUrl方法。

我在我的项目中有一个名为的目录,Core我将所有助手、自定义类和一般应用程序逻辑放在其中,这些逻辑在逻辑上不适合其他任何地方。您可能有一个类似的目录或不同的地方,您希望放置此代码;因此,请酌情替换。

添加新文件App/Core/Auth/VerifyEmail.php

用以下内容填充此文件:

 $notifiable->getKey(),'hash' => sha1($notifiable->getEmailForVerification()),]);}
}

更新您的User模型以覆盖sendEmailVerificationNotification使用上面新创建的类的方法:

/*** Send the email verification notification.** @return void*/
public function sendEmailVerificationNotification()
{$this->notify(new \App\Core\Auth\VerifyEmail);
}

瞧!现在将使用您自定义的验证 URL 生成您的电子邮件验证电子邮件

在我上面的例子中,我仍然想要一个签名的路由,以便我可以验证验证 URL 没有被篡改,但是你可以用你想要的任何方式替换它来生成 URL。例如,让我们从我的第一种方法中实现一年超时;只需更新verificationUrl为:

protected function verificationUrl($notifiable){return URL::temporarySignedRoute('verification.verify',Carbon::now()->addMinute(525600),['id' => $notifiable->getKey(),'hash' => sha1($notifiable->getEmailForVerification()),]);}

相关内容

热门资讯

上海:对取得卫星通信基础电信业... 上海市人民政府办公厅印发《关于支持长三角G60科创走廊策源地建设的若干措施》。其中提到,加速航空航天...
科创综指ETF鹏华(58968... “硬科技”企业再度受到市场关注,12月24日,科创板两融余额合计2692.87亿元,较上一交易日增加...
上海:重点突破人工智能编译器、... 格隆汇12月25日|上海市人民政府办公厅印发《上海市加强开源体系建设实施方案》的通知。重点突破人工智...
恒力石化涨2.02%,成交额4... 12月25日,恒力石化盘中上涨2.02%,截至14:10,报20.75元/股,成交4.93亿元,换手...
南山智尚股价涨5%,国泰基金旗... 12月25日,南山智尚涨5%,截至发稿,报17.42元/股,成交3.91亿元,换手率4.56%,总市...