【问题标题】:How to use intended function in Laravel如何在 Laravel 中使用预期功能
【发布时间】:2016-01-25 22:50:36
【问题描述】:

我需要使用以下网址注册锦标赛:

http://laravel.dev/tournaments/1/register/

这个URL在中间件'auth'中,所以如果用户没有登录,他会被重定向到登录/页面。

我需要的是重定向到

http://laravel.dev/tournaments/1/register/

登录后。

在我的 routes.php 中,我有:

Route::get('tournaments/{tournamentId}/register', 'TournamentController@register');

有人告诉我要使用

redirect()->intended

但我不知道该怎么做。

在一般情况下,用户将被重定向到 /admin,但在这种情况下,我希望他继续执行他的主要操作(注册锦标赛)...

我使用内置特征登录,所以我检查了登录时系统做了什么,它已经在使用这个功能:

protected function handleUserWasAuthenticated(Request $request, $throttles)
{
    if ($throttles) {
        $this->clearLoginAttempts($request);
    }

    if (method_exists($this, 'authenticated')) {
        return $this->authenticated($request, Auth::guard($this->getGuard())->user());
    }

    return redirect()->intended($this->redirectPath());
}

问题是它会将我重定向到默认路径,而不是动态路径...

【问题讨论】:

    标签: laravel laravel-5 routes


    【解决方案1】:

    检查事项:

    • 使用浏览器的检查元素网络功能来跟踪重定向 - 可能有多个,这有助于消除混淆。

    • intended() 方法在重定向到前者时需要调用 guest()。这发生在 Authenticate 中间件中,但是 如果您正在使用其他中间件(例如用于捕获管理员并将其重定向到管理区域的中间件),这可能会首先触发并在不使用 guest() 的情况下进行重定向。

    • 使用AuthenticatesUsers trait 的控制器是否实现authenticated 方法?如果是这样,这将被返回而不是 redirect()->intended()

    【讨论】:

    • 对于第一点,我会检查它。关于第二点,你能告诉我更多吗,因为我就是这种情况。第三点,是的,你可以在代码中看到。
    • 对于第二点,查看app/Http/Kernel.php$routeMiddleware 中的每个类,看看其中是否包含重定向而不调用guest()
    • 第三点,如果你的控制器中实现了authenticated()方法,你应该确保它使用guest(),或者删除它。
    • 我得到了它的工作,但仍然与社交名流失败 --> stackoverflow.com/questions/35022774/…
    【解决方案2】:

    您应该知道 Redirect ToRedirect Intended

    之间的区别
    Redirect Intended: redirects the user to where they were originally going
    
    Redirect To: Redirect the user to the page **YOU** specify them to go.
    

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 2016-03-08
      • 2018-10-22
      • 2017-10-16
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      相关资源
      最近更新 更多