【问题标题】:Laravel Fortify email verification redirects to /homeLaravel Fortify 电子邮件验证重定向到 /home
【发布时间】:2021-07-12 19:57:55
【问题描述】:

我正在使用 Laravel Fortify 对我的项目进行身份验证。 用户注册后,它应该被重定向到一个页面,告诉它已经发送了一封邮件 - 但是,它会重定向到/

根据文档,我做了以下事情:

  1. 我的User 模型实现了MustVerifyEmail
  2. 我已创建要显示的视图 (views/auth/verify-email.blade.php)。
  3. 我在FortifyServiceProviderboot 方法中有以下几行:
Fortify::verifyEmailView(function () {
    return view('auth.verify-email');
});

但是,在用户注册后,它被重定向到/,而不是我指定的视图!

帮助表示赞赏。

【问题讨论】:

    标签: php laravel authentication


    【解决方案1】:

    正如documentation 所说:

    如果注册尝试成功,Fortify 会将用户重定向到通过应用程序的 fortify 配置文件中的 home 配置选项配置的 URI。如果登录请求是 XHR 请求,则会返回 200 HTTP 响应。

    因此,如果您没有更改您的 fortify.home 配置,它将被默认为 /home(因为这是配置文件中的默认设置)。

    Here is the source code 这样你就可以看到用户注册后它会做什么,this is the response(最后一行代码)。

    Fortify::verifyEmailView 对应于向用户显示必须验证电子邮件的验证,但正如文档所述:

    注册后,您可能希望用户在继续访问您的应用程序之前验证他们的电子邮件地址。

    因此,如果用户未登录或刚刚注册登录,这将显示消息。

    这是如何工作的?这要归功于 Laravel 本身,它使用 Middleware 来做到这一点,而 Fortify 只是使用这些标准。 This is the source codeEnsureEmailIsVerified 中间件。

    如果我不感到困惑,默认情况下这不是on,所以你必须告诉你希望它在哪些路由上工作,或者将它转为on 作为global 中间件。 This is the default config 用于 Laravel 8 中的所有中间件。

    【讨论】:

    • 非常感谢您的回复,非常感谢您的解释!但是,当我 either\Illuminate\Auth\Middleware\EnsureEmailIsVerified::class 添加到 Kernel.php 中的 $middleware 数组时,注册重定向到 /email/verify 但由于重定向过多而出现错误(假设因为 verified 中间件然后也适用于该页面)。如果我将中间件放在 web.php 中的 /home 上,everything 会重定向到 /email/verify 并且页面会正确显示。有什么想法吗?
    猜你喜欢
    • 2020-11-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2020-03-18
    • 2022-08-14
    • 2019-02-12
    • 1970-01-01
    相关资源
    最近更新 更多