【问题标题】:How does Laravel Email Verification (technically) work? [closed]Laravel 电子邮件验证(技术上)如何工作? [关闭]
【发布时间】:2019-04-06 16:11:32
【问题描述】:

我正在使用标准的 laravel 注册系统 (php artisan make:auth),我目前想知道 laravel 中的邮件验证是如何工作的。我在数据库中看不到任何令牌或其他东西可以与 laravel 的“注册完成”邮件中的令牌或其他东西进行比较(注册后)。 那么 Laravel 如何准确地确保 token 是正确的呢?

我已经查看了 RegistraterController 并认为它必须与控制器的 create 方法中调用的 User::create() 方法有关。但是,不幸的是,我什至找不到这种方法...
(我的 Laravel 运行的是 5.8.7 版本)

【问题讨论】:

标签: php laravel laravel-5.8


【解决方案1】:

Laravel 为此使用所谓的签名路由,使用密钥对 URL 进行哈希处理,因此无需存储令牌。见Illuminate\Routing\UrlGenerator::signedRoute

这个函数是通过Illuminate\Auth\Notifications\VerifyEmailIlluminate\Auth\MustVerifyEmail trait 中调用的,用于Illuminate\Foundation\Auth\User 模型。

根据用户请求,然后由Illuminate\Routing\UrlGenerator::hasValidSignature 验证哈希

【讨论】:

  • 所有这些 URL 是否都使用相同的密钥签名?如果是这样,如何更改此密钥?如果没有,当用户单击时,哈希存储在哪里以进行比较?我希望使用相同或相似的机制来退订用户
  • 是的,所有都使用相同的密钥签名,它使用配置值app.key。见:github.com/laravel/framework/blob/…
猜你喜欢
  • 2015-06-27
  • 2020-03-18
  • 1970-01-01
  • 2014-10-17
  • 2016-05-21
  • 2014-07-20
  • 1970-01-01
  • 2019-02-12
  • 2021-02-15
相关资源
最近更新 更多