我正在开发一个Laravel应用程序,我需要一些建议。
我有一个页面,当用户未登录访问权限时,它会重定向到登录页面,并且在身份验证之后,他又回到了同一个页面。这很好。
问题是如果用户是新用户。他没有登录并去登记。
然后他注册并且应用程序将他重定向到其他几个页面(例如,他需要验证他的电子邮件),一切完成后,他将在仪表板页面上。
现在有什么办法,我可以保存他在某个页面上并在注册并通过所有这些页面后回到同一页面?
谢谢, Santhosh
答案 0 :(得分:2)
由于您还没有发布任何代码,我会写一些关于我认为您应该如何处理此问题的一般性解释。
简而言之 - 您可以获取缩进网址并将其作为查询参数添加到注册按钮,即yourdomain.com/register?origin=some_route
。
假设您在登录页面上有一个注册按钮/链接,请将原点添加到链接href:
<a href="register?origin=some_route">Register<a>
这样,当您完成注册后,您只需使用origin
即可访问\Input::get('origin')
。
现在,要实际获取预期的网址,您可以尝试使用以下方式从会话中获取:
\Session::get('url.intended', url('/'))
或者您可以使用\Redirect::intended(url('/'))->getTargetUrl();
在这两种情况下url('/')
都用作主页的后备网址,您可以将其替换为您希望的任何其他网址。
希望这有帮助!
答案 1 :(得分:0)
我想你可以在一页上做这样的事情:
return redirect()->intended('/dashboard');
与
相同 return \Redirect::intended('/dashboard');
根据文档:https://laravel.com/docs/5.2/authentication#authenticating-users
重定向器上的预期方法会将用户重定向到他们在被身份验证过滤器捕获之前尝试访问的URL。如果目标目的地不可用,则可以为此方法提供回退URI。
或者,如果您正在浏览多页登录&#39;向导&#39;类型交易,我个人存储会话或Cookie中的redirect() - &gt;的初始值,并在注册过程完成后重定向到会话/ cookie的值。
答案 2 :(得分:0)
您可以在表单中的隐藏字段中打印HTTP referer,而不是预期的重定向功能,然后在登录后重定向到该URL。
<input type="hidden" name="redirect" value="{{URL::previous()}}">
控制器:
if(Input::get('redirect') && (Input::get('redirect') != url('/path/to/login/'))){
return redirect(Input::get('redirect'));
}
else{
return redirect('/alternative/page');
}