php - Laravel 电子邮件验证(技术上)如何工作?
问题描述
我正在使用标准的 laravel 注册系统(php artisan make:auth
),我目前想知道 laravel 中的邮件验证是如何工作的。我在数据库中看不到任何令牌或其他东西可以与 laravel 的“注册完成”邮件中的令牌或其他东西进行比较(注册后)。那么 Laravel 如何准确地确保令牌是正确的呢?
我已经查看了 RegistraterController 并认为它必须对在 Controller的方法User::create()
中调用的方法做一些事情。create
但是,不幸的是,我什至找不到这种方法......
(我的 Laravel 运行在 5.8.7 版本上)
解决方案
Laravel 为此使用所谓的签名路由,使用密钥对 URL 进行哈希处理,因此无需存储令牌。看Illuminate\Routing\UrlGenerator::signedRoute
这个函数是通过模型中使用Illuminate\Auth\Notifications\VerifyEmail
的Illuminate\Auth\MustVerifyEmail
特征调用的Illuminate\Foundation\Auth\User
。
根据用户请求,然后通过以下方式验证哈希Illuminate\Routing\UrlGenerator::hasValidSignature
推荐阅读
- python - 熊猫日期格式
- c# - 在 ASP.NET Core Web Api 中使用 JWT 授权检查 IP
- selenium-webdriver - 使用带有 Sendkeys 的动作类(“15/16”)后如何释放键
- android - 向 Okhttp 发送不同格式的 json
- amazon-web-services - 使用 root 用户(= 存储桶所有者)将存储桶策略放在 aws s3 存储桶上时访问被拒绝
- uwp - 如何在 UWP 中旋转 Textblock 后获得正确的宽度和高度
- html - 用内容扩展 div 宽度
- java - Levenshtein 算法中的缺失值和 NPE
- .net - 多个网站平台上的 GTM 和 GA 跟踪
- outlook - 为所有日历启用 Cloud Elements Microsoft Graph 日历 webhook 很热门吗?