首页 >后端开发 >php教程 >Laravel 登录后如何将用户重定向到原始目的地?

Laravel 登录后如何将用户重定向到原始目的地?

Barbara Streisand
Barbara Streisand原创
2024-11-30 17:37:11349浏览

How to Redirect Users to Their Original Destination After Laravel Login?

Laravel:登录后将用户重定向到原始目的地

在 Laravel 中,当用户尝试访问受保护的路由时,他们会被重定向到登录页面。登录后,用户应该被重定向回他们最初尝试访问的页面。

解决方案

适用于 Laravel 5.3 及以上

  • 在登录操作中使用预期方法将用户重定向回预期页面。示例:
// Login action
public function login(Request $request)
{
    if (Auth::attempt($request->all())) {
        return redirect()->intended('dashboard');
    }

    return redirect('login');
}

For Laravel 5 Up to 5.2

  • 修改 auth 中间件以在重定向到之前将请求的 URL 存储在会话中登录页面。
  • 在登录操作中,使用预期的方法重定向用户返回到预期页面,如果没有,则返回默认页面。示例:
// Auth middleware
public function handle($request, Closure $next)
{
    if (Auth::guest()) {
        Session::put('intended_url', request()->url());
        return redirect('login');
    }

    return $next($request);
}

// Login action
public function login(Request $request)
{
    if (Auth::attempt($request->all())) {
        return redirect()->intended('dashboard');
    }

    return redirect('login');
}

对于 Laravel 4

  • 在 auth 过滤器中使用 Redirect::guest 方法将用户重定向到登录名页面并将请求的 URL 存储在会话中。
  • 在登录操作中,使用Redirect::intended 方法将用户重定向回预期页面,如果没有,则返回默认页面。示例:
// Auth filter
Route::filter('auth', function($route, $request) {
    if (Auth::guest())
    {
        Session::put('intended_url', request()->url());
        return Redirect::guest('login');
    }
});

// Login action
public function login(Request $request)
{
    if (Auth::attempt($request->all())) {
        return Redirect::intended('dashboard');
    }

    return Redirect::to('login');
}

以上是Laravel 登录后如何将用户重定向到原始目的地?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn