Laravel 5 在这种情况下,如何返回到预期页面

Laravel 5 在这种情况下,如何返回到预期页面,laravel-5,Laravel 5,我有一个网上报纸的典型场景,你有文章,下面有一个评论表单,但是你需要登录评论。因此,单击它会将您带到日志页面,一旦您通过身份验证,它会将您返回到该页面 因此,由于表单是用户无需登录即可查看的页面的一部分,因此我无法为PostController(get route)创建的页面编写中间件 CommentController只有一个方法,即表单的存储方法。因此,当然,如果我为该控制器放置了一个中间件,它将失败,因为尽管它确实会在单击submit按钮时将您带到登录页面,但保存的预期URL将是表单的帖子

我有一个网上报纸的典型场景,你有文章,下面有一个评论表单,但是你需要登录评论。因此,单击它会将您带到日志页面,一旦您通过身份验证,它会将您返回到该页面

因此,由于表单是用户无需登录即可查看的页面的一部分,因此我无法为PostController(get route)创建的页面编写中间件

CommentController只有一个方法,即表单的存储方法。因此,当然,如果我为该控制器放置了一个中间件,它将失败,因为尽管它确实会在单击submit按钮时将您带到登录页面,但保存的预期URL将是表单的帖子,因此在验证后返回,它会将您带到一个不存在的URL页面,该页面的名称为该表单的发布路径

我读过关于Auth::guards之类的文章,但没有说清楚

这个


问的问题与我的问题完全相同,这是相同的场景,但我看不出他的答案是如何工作的,因为在Auth控制器中定义一个受保护的变量(我已经有了),比如protected$redirectTo,只会告诉您在身份验证后要去哪里,这只是一个固定的路径,在我的情况下,它会将您带到仪表板。但是我不想被带到仪表板,它必须返回到文章和评论表单所在的页面。

我已经有一段时间没有这样做了,但这应该可以正常工作。 您可以在从评论部分到登录页面的链接中添加GET参数

将目标url放入会话变量
url.destinated
中,然后在登录后像这样重定向

Redirect::intended('/');

如果会话变量不可用,这将重定向回url“/”。

我在Laracasts找到了解决方案。我必须说我真的不明白,但它是有效的。它向AuthController添加了两个函数

public function showLoginForm()
        {
            if(!session()->has('from')){
                session()->put('from', url()->previous());
            }
            return view('auth.login');
        }

        public function authenticated($request,$user)
        {
            return redirect(session()->pull('from',$this->redirectTo));
        }