Laravel 登录后将用户重定向到原始目的地
Posted
技术标签:
【中文标题】Laravel 登录后将用户重定向到原始目的地【英文标题】:Laravel Redirect user to original destination after login 【发布时间】:2018-12-24 18:39:20 【问题描述】:在我的 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');
如果用户在会话中,我如何将其发送到原始目的地,否则将他们送回家中。
【问题讨论】:
return redirect()->intended('/home');
使用内置的laravel预期方法
@Saad Suri 感谢它的工作:) 祝你有美好的一天
将其作为答案发布,以便未来的读者可以获得帮助
这是一个重复的问题 - [***.com/questions/15389833/…
【参考方案1】:
使用,
return redirect()->intended('/home')
重定向器上的预期方法会将用户重定向到他们尝试访问的 URL,然后被身份验证中间件拦截。如果预期的目的地不可用,则可以为此方法提供一个备用 URI。
【讨论】:
【参考方案2】:documentation 提到的很简短,但是 Laravel 有一个内置方法:
return redirect()->intended('/home')
每当 Auth 中间件因为用户未登录而重定向用户时,他的原始 url 将被存储。 intended
检查该 url 是否已存储并使用它,或者您作为参数提供的后备。
【讨论】:
以上是关于Laravel 登录后将用户重定向到原始目的地的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8 Jetstream如何在重置密码后将用户重定向到自定义路由
如何将所有访客请求重定向到 Laravel 应用程序中的登录页面?