Larvel - 如何使用令牌返回视图

Larvel - how to return view with token

提问人:Tom 提问时间:11/13/2023 更新时间:11/16/2023 访问量:38

问:

Route::get('/password/reset/{token}', [PasswordResetController::class, 'showResetPasswordPage'])->name('password.reset.token');
   public function showResetPasswordPage(Request $request)
    {

        $token = $request->route()->parameter('token');

        return view('resetpassword')->with(
            ['token' => $token]
        );
    }

我在 web.php 中将其作为我的路由 - 如果它将参数作为 1234 作为令牌引用传递,则返回视图,我可以获取令牌。

但是,我使用的 API 会发送一个重置代码,例如“PKKGhoTq6Po3HzgpqThGyN1g8%2F%2BvPabz”,如果我传递给 url - 显示为未找到。

有没有办法解析它,以便我可以像使用 1234 时那样返回带有令牌的视图?

任何帮助将不胜感激。

尝试了不同的参数/路线设置,但无济于事。

LARAVEL 路由 参数 LARAVEL-8

评论

2赞 matiaslauriti 11/13/2023
删除并用 this 替换函数签名,它将可用$token = $request->route()->parameter('token');public function showResetPasswordPage(Request $request, string $token)
0赞 Tom 11/13/2023
谢谢!我已经按照您的建议进行了尝试,它再次适用于“1234”,但不适用于“PKKGhoTq6Po3HzgpqThGyN1g8%2F%2BvPabz” - 想知道 Laravel 是否因为字符格式而拒绝它?
0赞 Tom 11/13/2023
似乎是这种情况 - 我添加了 ->where('token', '.*');到 web.php 中路由的末尾,现在视图正在加载并且令牌可用。
0赞 mike 11/13/2023
请务必回答自己的问题以关闭问题并获得学分。
0赞 francisco 11/13/2023
编码的正斜杠

答:

0赞 Tom 11/13/2023 #1

似乎是这种情况 - 我添加了 ->where('token', '.*');到 web.php 中路由的末尾,现在视图正在加载并且令牌可用。

在 web.php 中,这是返回视图的路由:

Route::get('/password/reset/{resetCode}', [PasswordResetController::class, 'showResetPasswordPage'])->name('password.reset.resetCode')->where('resetCode', '.*');

控制器:

    public function showResetPasswordPage(Request $request, string $resetCode)
{
    return view('resetpassword')->with(
        ['token' => $resetCode]
    );
}

添加 ->where('resetCode', '.*');到路由的末尾,阻止了 Larvel 过滤令牌并将其顺利地传递给视图。

评论

0赞 Peter Fox 11/14/2023
请分享最终代码,以便您帮助其他用户。
0赞 Community 11/14/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。