我遇到了一个简单的问题,但我仍然无法解决它。目前我得到了检查用户状态的中间件,如果它的中间件重定向用户选择状态root。那么,在成功选择状态后,我如何将用户重定向到路由?
我的状态检查中间件:
iArr + 3
我正在使用laravel 5。 提前谢谢!
答案 0 :(得分:2)
让我们看一下使用Redirect::intended()
和Redirect::guest()
Redirect::intended()
背后的代码是:
public function intended($default, $status = 302, $headers = array(), $secure = null)
{
$path = $this->session->get('url.intended', $default);
$this->session->forget('url.intended');
return $this->to($path, $status, $headers, $secure);
}
Redirect::guest()
的那个是:
public function guest($path, $status = 302, $headers = array(), $secure = null)
{
$this->session->put('url.intended', $this->generator->full());
return $this->to($path, $status, $headers, $secure);
}
基本上,这意味着你可以这样做:
if (!Auth::user()->status) {
return redirect()->guest('/user/user-status');
}
return $next($request);
然后,一旦完成设置状态的过程,您只需运行:
return redirect()->intended()
;
答案 1 :(得分:0)
您必须使用重定向提供程序。在这个功能中,Laravel记住了预期的路径。
if (Auth::user()->status == '0') {
{
\Session::flash('flash_message','Please choose a status.');
return redirect()->guest('/user/user-status');
}
return $next($request);
答案 2 :(得分:0)
你可以试试这个:
if (Auth::user()->status == '0') {
return redirect()->guest('/user/user-status');
}
return $next($request);
根据代码文档,redirect()->guest()
执行此操作:“创建新的重定向响应,同时将当前URL放入会话中。”然后,在“用户状态”页面中,您可以通过Session::get('url.intended')
或return redirect()->intended('default-route-if-not-set');