在这种情况下如何返回目标页面

时间:2016-07-05 05:33:18

标签: laravel-5

我有一个典型的在线报纸的情景,你有文章和下面的评论表格,但你需要登录评论。因此,点击它会将您带到日志页面,一旦您进行了身份验证,它就会返回到该页面。

因此,因为表单是用户可以在不登录的情况下看到的页面的一部分,所以我无法为PostController创建的页面编写中间件(get route)。

CommentController只有一个方法,即Form的存储方法。所以,当然,如果我为该控制器放置了一个中间件,它就会失败,因为虽然它确实会在点击提交按钮时进入登录页面,但是保存的预期URL将是该表格的Post,所以在返回之后通过身份验证,它会将您带到该表单的Post路径名称下的不存在的URL页面。

我已经读过关于Auth :: guards之类的东西,但是用它来说还不清楚,

Laravel 5 - After login redirect back to previous page

问我完全一样的问题,这是同样的情况,但我看不出他的答案是如何工作的,因为在Auth控制器中定义受保护的变量(我已经有了)就像受保护的$ redirectTo一样只能说明进行身份验证之后,它只是一条固定的路线,在我的情况下,它会带你到仪表板。但我不想被带到仪表板,它必须返回到文章和评论表格所在的页面。

2 个答案:

答案 0 :(得分:0)

我在Laracasts找到了解决方案。我必须说我真的不理解它,但它确实有效。它为AuthController添加了两个函数。

https://laracasts.com/discuss/channels/laravel/redirect-to-page-where-login-button-was-clicked

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));
        }

答案 1 :(得分:-1)

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

http://....com/login?intended=http://yourredirectlink.com/#form

将预期的网址放入会话变量url.intended中,然后在登录后重新定位

Redirect::intended('/');

这将重定向回到网址' /'如果会话变量不可用。