我有一个laravel内置博客,并评论帖子(如果你已经注销),你必须登录。我把这样的链接:
<a href="{{ URL::route('login') }}">login</a> to do this.
这会重定向到登录表单,该表单一旦填写完毕并且用户已通过身份验证,我就会这样:
return Redirect::intended('/');
用户访问主页,不他们打算使用的页面,在这种情况下,带有他们点击login
链接的帖子的页面能够评论。在这种情况下,如何将它们返回到预期的URL?
答案 0 :(得分:4)
实际上,如果会话中有可用的密钥为Redirect::intended('/')
,则url.intended
有效,否则会重定向到您的情况下的默认URL
&#39; /&#39 ;所以你肯定没有把URL
放在会话中。为此,您可以使用以下内容将URL
放入会话中:
Session::put('url.intended', 'url...');
因此,可能在登录链接中,您可以添加如下查询字符串:
<a href="{{ URL::route('login') }}?intended=1">login</a>
因此,您可以跟踪重定向并在该路由的方法中(在返回View
之前)将上一个URL
放入会话中,使用以下内容:
if(Input::get('intended')) {
Session::put('url.intended', URL::previous());
}
然后,在您从那里重定向之前,您应该使用以下内容从会话中删除URL
:
$intendedUrl = Session::get('url.intended', url('/'));
Session::forget('url.intended');
return Redirect::to($intendedUrl);
这应该可以解决问题。此外,您可以查看this answer,也可以提供帮助。
答案 1 :(得分:2)
Redirect::intended
需要两个部分才能运作。第一种是当用户尝试访问受限页面/orders
但他们没有登录时,您通过以下方式将其重定向到登录页面:
redirect()->guest('/login');
然后,如果验证成功,则在您的登录回复后,请致电:
redirect()->intended('/dashboard');