laravel 为什么Fortify路由用于验证电子邮件地址的认证中间件?

cetgtptt  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(113)

我想知道为什么Fortify中的路由不需要用户登录,但却附带了认证中间件。

例如,验证电子邮件的路线

Route::get(RoutePath::for('verification.verify', '/email/verify/{id}/{hash}'), [VerifyEmailController::class, '__invoke'])
            ->middleware([config('fortify.auth_middleware', 'auth') . ':' . config('fortify.guard'), 'signed', 'throttle:' . $verificationLimiter])
            ->name('verification.verify');

字符串
如果没有设置会话cookie,这将导致“未经身份验证”的响应,当用户必须通过电子邮件发送给他的链接来验证他的电子邮件地址时,这对我来说没有多大意义。

zf9nrax1

zf9nrax11#

在电子邮件验证路由中使用auth中间件的原因可能是为了处理用户在登录时试图验证其电子邮件的情况。例如,在注册后,用户可能保持登录状态,但不会立即验证其电子邮件。当他们最终单击验证链接时,应用程序可以检查当前登录的用户是否与验证链接中的ID匹配,这是确保正确的用户正在验证他们的电子邮件的常用方法。
但是,如果注销用户尝试验证其电子邮件并点击auth中间件,则此设置可能会导致问题,从而导致“未经身份验证”的响应。要解决此问题,通常应将auth中间件配置为在电子邮件验证的情况下允许访客访问,或者路由根本不应包括auth中间件。

相关问题