Laravel 6.x VerifiesEmails.php 通过 $request->route('hash') 失败,通过 $request->get('hash')

Laravel 6.x VerifiesEmails.php fails with $request->route('hash'), passes with $request->get('hash')

\Illuminate\Foundation\Auth\VerifiesEmails.php 中,第 39 行失败 $request->route('hash'),但通过 $request->get('hash')。我不确定这是否是一个错误,但我没有看到我所做的任何事情会以某种方式特别破坏此功能。我也没有从核心修改我的 VerificationController.php 文件。

上面的$request->route('id')有效,但是在这个路由中传递的ID不是参数,而是直接在路径中,而哈希附加为?hash=myhash。

作为参考,这是我的URL:http://localhost:8000/email/verify/8edd16a5-ad04-4782-b0fe-33f0f482d080?expires=myexpiryhere&hash=myhashhere&signature=mysignaturehere

任何人都可以向我解释如何让它工作吗?显然修改供应商文件不是一种选择。我在 Laravel 问题 here 中发布了这个,但有人建议我可能忘记了路由参数。 URL 是由框架生成的,所以我不知道我可能会忘记什么参数。

这是我的问题,但感谢 Chin Leung 提出了正确的问题。

我目前的路线是:

Route::get('email/verify', [VerificationController::class, 'show'])->name('verification.notice');
Route::get('email/verify/{id}', [VerificationController::class, 'verify'])->name('verification.verify');
Route::post('email/resend', [VerificationController::class, 'resend'])->name('verification.resend');

我自己指定它们是因为我没有在我的路由文件中使用默认命名空间,我直接导入控制器以使重构更容易。看起来 verification.verify 路由后来添加了一个新参数,所以现在应该是 email/verify/{id}/{hash}