Laravel 5 过滤后重定向到上一个根目录
Laravel 5 redirect to previous root after filters
我运行陷入简单的问题,但我还是无法解决。目前我得到了检查用户状态的中间件,如果它是 0 中间件重定向用户选择状态根。那么,在成功选择状态后,我如何将用户重定向到路由,他在哪里被中间件咳嗽了?
我的状态检查中间件:
if (Auth::user()->status == '0') {
return new RedirectResponse(url('/user/user-status'));
}
return $next($request);
我正在使用 laravel 5。
提前致谢!
您必须使用重定向提供程序。进入这个函数,Laravel 记住了预期的路径。
if (Auth::user()->status == '0') {
{
\Session::flash('flash_message','Please choose a status.');
return redirect()->guest('/user/user-status');
}
return $next($request);
你可以试试这个:
if (Auth::user()->status == '0') {
return redirect()->guest('/user/user-status');
}
return $next($request);
根据代码文档,redirect()->guest()
这样做:"Create a new redirect response, while putting the current URL in the session."。然后,在您的 "user status" 页面中,您可以在与 Session::get('url.intended')
或 return redirect()->intended('default-route-if-not-set');
的会话中获得预期的 URL
让我们看看使用 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()
;
我运行陷入简单的问题,但我还是无法解决。目前我得到了检查用户状态的中间件,如果它是 0 中间件重定向用户选择状态根。那么,在成功选择状态后,我如何将用户重定向到路由,他在哪里被中间件咳嗽了?
我的状态检查中间件:
if (Auth::user()->status == '0') {
return new RedirectResponse(url('/user/user-status'));
}
return $next($request);
我正在使用 laravel 5。 提前致谢!
您必须使用重定向提供程序。进入这个函数,Laravel 记住了预期的路径。
if (Auth::user()->status == '0') {
{
\Session::flash('flash_message','Please choose a status.');
return redirect()->guest('/user/user-status');
}
return $next($request);
你可以试试这个:
if (Auth::user()->status == '0') {
return redirect()->guest('/user/user-status');
}
return $next($request);
根据代码文档,redirect()->guest()
这样做:"Create a new redirect response, while putting the current URL in the session."。然后,在您的 "user status" 页面中,您可以在与 Session::get('url.intended')
或 return redirect()->intended('default-route-if-not-set');
让我们看看使用 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()
;