过滤器后,Laravel 5重定向到上一个根目录

时间:2015-05-22 09:32:20

标签: laravel redirect laravel-5 response middleware

我遇到了一个简单的问题,但我仍然无法解决它。目前我得到了检查用户状态的中间件,如果它的中间件重定向用户选择状态root。那么,在成功选择状态后,我如何将用户重定向到路由?

我的状态检查中间件:

iArr + 3

我正在使用laravel 5。 提前谢谢!

3 个答案:

答案 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');

获取与预期网址相关的网址