首页 > 解决方案 > Laravel 已登录时重定向

问题描述

基本信息 :

使用 Laravel 7.29.3

我所有的路线都需要基于用户选择的语言的语言环境。例如,一个有效的 URL 类似于www.test.com/en/home

情况 :

用户在两个选项卡 Tab1 和 Tab2 中打开了我的网站。两个标签中的相同网站。

他正在使用 Tab1 登录并获得身份验证。然后他单击 Tab2 中的登录按钮。Laravel 意识到用户已经通过身份验证并将用户重定向到www.test.com/home

问题是www.test.com/home中没有任何语言环境并且无效。用户得到一个 404 错误。

在 Laravel LoginController 中有一个变量

 protected $redirectTo = RouteServiceProvider::HOME;

但是我如何在那里获得当前选择的语言环境?我知道函数 app()->getLocale() 但是当我尝试

protected $redirectTo = app()->getLocale() . RouteServiceProvider::HOME;

我收到一条错误消息

Constant expression contains invalid operations 

我已经在我的 LoginController 中添加了以下函数,但是 Laravel 在上面提到的带有两个选项卡的情况下会忽略它。

protected function redirectTo()
{

return app()->getLocale() . '/home';

}

那么如何在 redirectTo 中获取当前选择的语言环境/语言?

 protected $redirectTo = RouteServiceProvider::HOME;

提前致谢

标签: phplaravel

解决方案


如果对您没有帮助,这是我的第一个回复,很抱歉,但我认为在 laravel 7 中,您有一个位于 AuthenticatesUsers 特征中的方法,称为 authenticated() 这可以帮助您在用户登录后执行您想要的操作,或者只是如果未触发 redirectTo() 函数,则在控制器中创建一个方法 redirectPath() 以从 RedirectsUsers 覆盖它。


推荐阅读