登录后重定向到 Laravel 上一页

5

我有一个登录表单,在表单提交后(如果验证无误),浏览器应该重定向到登录前的最后一页。目前我回到了之前的页面,而且我每次都进入同样的登录页面。 我的routes.php文件大致如下:

Route::get('/', 'HomeController@index');
Route::get('/list','EventController@index');
Route::get('/login','AuthController@login');
Route::post('/login','AuthController@do_login');

在我的 do_login() 函数中,我的重定向代码如下:
if(Login_is_valid())
{
    return Redirect::back();
}

如果我在/list页面内,然后打开登录并正确填写表格,我会被重定向到/login页面,这不奇怪吗?非常感谢。

响应是完全有效的。从页面提交表单后,back()实际上会将您重定向到同一页。使用return redirect('url goes here')进行重定向。 - Andrei
你的意思是想要重定向到预期的路由吗? - DavidDomain
是的,例如我在/list里面,所以我必须被重定向到那里。这可以通过会话来完成,但我不知道它是否是最好的解决方案。 - Diogo Mendonça
尝试使用 return Redirect::intended(); - Mike Stotts
return Redirect::intended(); 会将我重定向到主页。 - Diogo Mendonça
显示剩余3条评论
2个回答

8

如果你使用Laravel 5.1,你可以通过以下方式重定向到之前的页面:

return back();

或者你可以使用会话(Session),Laravel将上一个页面保存在其中。
return redirect(Session::get('_previous')['url']);

0
Auth/LoginController 中有 protected $redirectTo = '/home';,将 '/home' 改为 '/loginin',并创建一个新的路由,类似于这样。
Route::get('/loginin', function ()
{
        $page = '/' . session()->get('page');
        if($page != '')
        {
            session()->put('page', '');
            return redirect($page);
        }
        else
        {
            return redirect('/home');
        }
});

或者你可以把这段代码放在控制器中,并从路由调用它。
在页面控制器的每个函数中加入以下代码。
session->put('page','/name_of_the_page');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接