【问题标题】:Laravel - redirect to second to last urlLaravel - 重定向到倒数第二个网址
【发布时间】:2014-04-09 14:57:25
【问题描述】:

是否有可能在身份验证之后将用户重定向到倒数第二页?

为什么?
我在覆盖中打开登录。当验证抛出错误时,重定向为:

return Redirect::intended('?openOverlay=login')->with('error-login-noconfirm','1');  

当用户输入正确的登录数据时,Redirect 是 back(),这意味着,他将被重定向到正确的页面,但打开 Overlay。

当用户成功登录时,我需要摆脱覆盖,这意味着,我可能需要将路由传递给登录方法,或者类似的东西。

你有什么想法吗?谢谢!

编辑:
登录代码:

    if ($validator->fails()) {
        return Redirect::intended('?openOverlay=login')
            ->withErrors($validator)
            ->withInput(Input::except('password'));
    } else {
        $user = User::where('email', Input::get('email'))->first();

        if (Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password'), 'confirmed' => 1))) {
            return Redirect::intended();
        } else {
            return Redirect::intended('?openOverlay=login')->with('error-login-noconfirm','1');
        }
    }

intended 也不起作用。它会将我重定向到我的 / 页面而不是“最后”页面。

【问题讨论】:

    标签: php redirect laravel laravel-4 overlay


    【解决方案1】:

    您不必使用 back()。登录过程是这样工作的:

    1) 一个“仍未登录”的用户尝试浏览您的网站并点击一条路线:

    Route::get('dashboard', 'DashboardController@dashboard');
    

    2) 但是被重定向到登录表单:

    return Redirect::to('?openOverlay=login');
    

    3) 成功登录后,您必须使用Redirect::intended() 将您的用户重定向到他/她第一次尝试访问的网址:

    if (Auth::attempt(array('email' => $email, 'password' => $password)))
    {
        // Login succeeded, redirect it to the intended url
    
        return Redirect::intended('home');
    }
    else
    {
        /// Login failed, redirect back to login, so your user can try to login again
    
        return Redirect::back()->with('error-login-noconfirm','1');
    }
    

    您的用户将被重定向到“仪表板”,而“主页”是一个备用路由,以防会话发生问题并且上面没有更多预期的(“仪表板”)网址。

    如果预期的 url 不是第一个访问的,你可以在 Session 中更改它:

    $path = Session::put('url.intended', $the_actual_url_intended);
    

    【讨论】:

    • 我尝试过,但我将我重定向到我的 / 页面,而不是例如我的 recipe/details/1 页面。在我的编辑中查看代码...(几秒钟后)
    • 在我的情况下,预期不知道,我的最后一页是什么......它将我重定向到 /
    • 哦,我想我现在明白了。您可以在会话中将预期的 url 更改为最后一个。看看我的编辑。
    • 不错,我试试看。在我的代码中查看完整的登录代码......带有验证。我认为如果失败了,这也是一个重点!
    • 主要问题是,我用 JS 打开了页面上的叠加层......但是,如果发生错误,我需要将 ?openOverlay 添加到我的 url 以重新打开叠加层以防万一错误。
    猜你喜欢
    • 2017-01-17
    • 1970-01-01
    • 2013-09-08
    • 2016-11-15
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    相关资源
    最近更新 更多