我有一个典型的在线报纸的情景,你有文章和下面的评论表格,但你需要登录评论。因此,点击它会将您带到日志页面,一旦您进行了身份验证,它就会返回到该页面。
因此,因为表单是用户可以在不登录的情况下看到的页面的一部分,所以我无法为PostController创建的页面编写中间件(get route)。
CommentController只有一个方法,即Form的存储方法。所以,当然,如果我为该控制器放置了一个中间件,它就会失败,因为虽然它确实会在点击提交按钮时进入登录页面,但是保存的预期URL将是该表格的Post,所以在返回之后通过身份验证,它会将您带到该表单的Post路径名称下的不存在的URL页面。
我已经读过关于Auth :: guards之类的东西,但是用它来说还不清楚,
此 Laravel 5 - After login redirect back to previous page
问我完全一样的问题,这是同样的情况,但我看不出他的答案是如何工作的,因为在Auth控制器中定义受保护的变量(我已经有了)就像受保护的$ redirectTo一样只能说明进行身份验证之后,它只是一条固定的路线,在我的情况下,它会带你到仪表板。但我不想被带到仪表板,它必须返回到文章和评论表格所在的页面。
答案 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('/');
这将重定向回到网址' /'如果会话变量不可用。