跳至内容

魔法链接登录

魔术链接登录是允许用户在忘记密码时登录的一项功能。

配置

魔术链接登录功能默认启用。您可以在 app/Config/Auth.php 文件中更改它。

public bool $allowMagicLinkLogins = true;

默认情况下,魔术链接可以使用 1 小时。这可以在 app/Config/Auth.php 文件中轻松修改。

public int $magicLinkLifetime = HOUR;

注意

您需要配置 app/Config/Email.php 以允许 Shield 发送电子邮件。请参阅 安装

魔术链接登录允许忘记密码的用户收到一封包含唯一的一次性登录链接的电子邮件。一旦他们登录,您可以决定如何响应。在某些情况下,您可能希望将他们重定向到一个特殊页面,让他们必须选择一个新密码。在其他情况下,您可能只想显示一条一次性消息,提示他们转到其帐户页面并选择一个新密码。

会话通知

您可以通过检查会话值 magicLogin 来检测用户是否已完成魔术链接登录。如果他们最近已完成流程,它将存在并具有 true 值。

if (session('magicLogin')) {
    return redirect()->route('set_password');
}

此值在会话中保留 5 分钟。一旦您不再需要采取任何操作,您可能需要从会话中删除该值。

session()->removeTempdata('magicLogin');

事件

在设置上述会话变量的同时,会触发一个 magicLogin 事件,你可以订阅该事件。请注意,不会将任何数据传递给该事件,因为你可以通过 user() 帮助器或 auth()->user() 方法轻松地从当前用户获取数据。

Events::on('magicLogin', static function () {
    // ...
});