首页 > 解决方案 > Laravel 登录后将用户重定向到原始目的地

问题描述

在我的 Laravel 应用程序中,我有一个只能由 Auth 用户访问的私有页面。我也在使用社交登录,所以当用户在没有登录的情况下进入私人页面时,Laravel 将用户发送到登录页面,成功登录后,用户被发送回原始目的地(私人页面)。只有当用户通过 Laravel 内置的 Auth 系统登录时,但当用户通过 Social Login 方法登录时,用户将被引导到主页。

这是我登录后的社交登录处理程序:

public function handleProviderCallback($provider)
{

    $user = Socialite::driver($provider)->user();

    $authUser = $this->findOrCreateUser($user, $provider);
    Auth::login($authUser, true);
    return redirect('/home');
}

如果会话中存在用户,我如何将用户发送到原始目的地,否则将他们送回家中。

标签: phplaravel

解决方案


文档非常简短地提到它,但 Laravel 有一个内置方法:

return redirect()->intended('/home')

每当 Auth 中间件因为用户未登录而重定向用户时,他的原始 url 将被存储。intended检查该 url 是否被存储并使用它,或者您作为参数提供的后备。


推荐阅读