Laravel 5 在这种情况下,如何返回到预期页面
我有一个网上报纸的典型场景,你有文章,下面有一个评论表单,但是你需要登录评论。因此,单击它会将您带到日志页面,一旦您通过身份验证,它会将您返回到该页面 因此,由于表单是用户无需登录即可查看的页面的一部分,因此我无法为PostController(get route)创建的页面编写中间件 CommentController只有一个方法,即表单的存储方法。因此,当然,如果我为该控制器放置了一个中间件,它将失败,因为尽管它确实会在单击submit按钮时将您带到登录页面,但保存的预期URL将是表单的帖子,因此在验证后返回,它会将您带到一个不存在的URL页面,该页面的名称为该表单的发布路径 我读过关于Auth::guards之类的文章,但没有说清楚 这个Laravel 5 在这种情况下,如何返回到预期页面,laravel-5,Laravel 5,我有一个网上报纸的典型场景,你有文章,下面有一个评论表单,但是你需要登录评论。因此,单击它会将您带到日志页面,一旦您通过身份验证,它会将您返回到该页面 因此,由于表单是用户无需登录即可查看的页面的一部分,因此我无法为PostController(get route)创建的页面编写中间件 CommentController只有一个方法,即表单的存储方法。因此,当然,如果我为该控制器放置了一个中间件,它将失败,因为尽管它确实会在单击submit按钮时将您带到登录页面,但保存的预期URL将是表单的帖子
问的问题与我的问题完全相同,这是相同的场景,但我看不出他的答案是如何工作的,因为在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));
}