leo*_*las 7 email email-verification laravel fortify laravel-8
我正在尝试让 Laravel 实现的电子邮件验证系统正常工作(https://laravel.com/docs/8.x/verification)。
到目前为止我做了什么:
在文件config/fortify.php中启用功能emailVerification,如下所示:
...
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
Features::updateProfileInformation(),
Features::updatePasswords(),
Features::twoFactorAuthentication([
'confirmPassword' => true,
]),
],
...
Run Code Online (Sandbox Code Playgroud)
在app/Models/User.php文件中实现MustVeriffyEmail,如下所示:
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Fortify\TwoFactorAuthenticatable;
use Laravel\Jetstream\HasProfilePhoto;
use Laravel\Jetstream\HasTeams;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable implements MustVerifyEmail
{
use HasApiTokens;
use HasFactory;
use HasProfilePhoto;
use HasTeams;
use Notifiable;
use TwoFactorAuthenticatable;
...
Run Code Online (Sandbox Code Playgroud)
这些更改后的结果:
Chrome 或 Firefox 一切正常,Safari 除外。如果我尝试单击每封邮件收到的电子邮件验证链接,它只会将我重定向到登录页面(在新选项卡中),而不会出现任何错误消息。再次登录后显示也不起作用。我的电子邮件现在仍未验证。
邮件中的链接看起来像这样:
如果我检查我的数据库,一切似乎都很好,除了我在email_verified_at列(存在)中没有得到任何记录。
也许有人有同样的问题并且可以在这里帮助我?
最好的问候,
莱昂
作为一种解决方法,直到今天我采用了一个不太用户友好的解决方案。
我只是将电子邮件验证链接也以纯文本形式放在验证电子邮件的页脚中,并附上一个快速注释,以便 safari 用户复制此链接并将其直接粘贴到浏览器 URL 中与之前使用的完全相同的选项卡中(用户已经登录的地方)。
这是我如何让它在 Safari 上工作的唯一解决方案......
电子邮件页脚看起来像这样:
当我写这个答案时,我继续再次测试了这个场景。
我真的不知道在此期间发生了什么,但对我来说,现在它按预期工作。
也许是因为我现在使用的是Laravel 9,或者可能是因为我现在使用的是MacOS Ventura和Safari 版本 16.1 (18614.2.9.1.12)。
如果我能以某种方式帮助您,请告诉我,如果有人知道同时发生的事情的答案,我很高兴听到它是什么:)
莱昂
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |