【问题标题】:Laravel redirect to intended with POSTLaravel 使用 POST 重定向到预期
【发布时间】:2018-03-23 23:31:22
【问题描述】:

我正在使用 Laravel 5.5 并尝试实现以下场景: 用户尝试使用POST 提交表单,但如果未登录,我会显示登录屏幕。

我的问题是登录后我使用return redirect()->intended('dashboard'); 继续我中断的用户流程。但是重定向会将请求转到GET

在面对登录屏幕之前,有什么合理的方法可以存储我初始表单中的数据,以便在登录后被重定向后恢复它?

【问题讨论】:

  • 为什么不把帖子数据放到会话中呢?粗略的非 laravel 例子$_SESSION['posted']=$_POST;
  • 问题在于何时将其放入会话中。我发布数据的控制器要求用户登录,所以一旦我到达保存数据的地方,它就已经丢失了。
  • 在显示表单之前检查以确保用户已登录。重定向回表单不应改变表单处理其表单提交的方式。
  • @Joseph_J,感谢您的建议。这完全有道理。我的问题是这个表单是根页面的一部分,它对我的​​用户来说不是很有用。
  • 把数据保存在浏览器的LocalStorage中怎么样?然后当用户返回时,如果数据存在于 LocalStorage 中,则使用这些值填充表单字段。

标签: php laravel laravel-5


【解决方案1】:

在你的中间件中这样做

if (Auth::check()) {
    return $next($request);
}else if (!Auth::check() ){
    $url = Request()->path();
    Session::put('loginRedirect', $url);
    return redirect('/login');
}

在登录控制器中

if(Session::get('loginRedirect')){
    $url = Session::get('loginRedirect');
    Session::forget('loginRedirect');
    return Redirect::intended(url($url));
}
return Redirect::intended(route('user.get_home'));

【讨论】:

  • 告诉我你是怎么用这个的?
  • 在 5.5 版中?
猜你喜欢
  • 2014-06-03
  • 2014-06-20
  • 2017-06-19
  • 2018-08-23
  • 2016-09-15
  • 2021-08-08
  • 2016-08-10
  • 2020-07-20
  • 2019-06-18
相关资源
最近更新 更多